home *** CD-ROM | disk | FTP | other *** search
/ Amiga Tools 2 / Amiga Tools 2.iso / tex / macros / source / contrib / refman / refman.dtx (.txt) next >
LaTeX Document  |  1995-03-09  |  120KB  |  3,194 lines

  1. % \iffalse meta-comment
  2. % Copyright (C) 1988 - 94 by H. Partl.
  3. % Copyright (C) 1994 by Axel Kielhorn.  All rights reserved.
  4. % For additional copyright information see further down in this file.
  5. % This file is to be used with the LaTeX2e system.
  6. % ------------------------------------------------
  7. %  This system is distributed in the hope that it will be useful,
  8. %  but WITHOUT ANY WARRANTY; without even the implied warranty of
  9. %  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  10. % IMPORTANT NOTICE:
  11. % For error reports in case of UNCHANGED versions see upload file.
  12. % Please do not request updates from us directly.  Distribution is
  13. % done through Mail-Servers and TeX organizations.
  14. % You are not allowed to change this file.
  15. % You are NOT ALLOWED to distribute this file alone.  You are NOT
  16. % ALLOWED to take money for the distribution or use of either this
  17. % file or a changed version, except for a nominal charge for copying
  18. % etc.
  19. % \fi
  20. % \CheckSum{2363}
  21. %% \CharacterTable
  22. %%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
  23. %%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
  24. %%   Digits        \0\1\2\3\4\5\6\7\8\9
  25. %%   Exclamation   \!     Double quote  \"     Hash (number) \#
  26. %%   Dollar        \$     Percent       \%     Ampersand     \&
  27. %%   Acute accent  \'     Left paren    \(     Right paren   \)
  28. %%   Asterisk      \*     Plus          \+     Comma         \,
  29. %%   Minus         \-     Point         \.     Solidus       \/
  30. %%   Colon         \:     Semicolon     \;     Less than     \<
  31. %%   Equals        \=     Greater than  \>     Question mark \?
  32. %%   Commercial at \@     Left bracket  \[     Backslash     \\
  33. %%   Right bracket \]     Circumflex    \^     Underscore    \_
  34. %%   Grave accent  \`     Left brace    \{     Vertical bar  \|
  35. %%   Right brace   \}     Tilde         \~}
  36. % \iffalse
  37. % \section{Identification}
  38. %    These document classes can only be used with \LaTeXe, so we make
  39. %    sure that an appropriate message is displayed when another \TeX{}
  40. %    format is used.
  41. %    \begin{macrocode}
  42. %<+refart|refrep>\NeedsTeXFormat{LaTeX2e}[1994/06/01]
  43. %    \end{macrocode}
  44. %    Announce the Class name and its version:
  45. %    \begin{macrocode}
  46. %<+refart>\ProvidesClass{refart}
  47. %<+refrep>\ProvidesClass{refrep}
  48. %<*driver>
  49. \ProvidesFile{refman.drv}
  50. %</driver>
  51.               [1994/10/30 v1.9e
  52. %<+refart|refrep>     LaTeX document class]
  53. %    \end{macrocode}
  54. % \fi
  55. % \iffalse
  56. % \section{A driver for this document}
  57. % The next bit of code contains the documentation driver file for
  58. % \TeX{}, i.e., the file that will produce the documentation you are
  59. % currently reading. It will be extracted from this file by the 
  60. % {\sc docstrip} program.
  61. % Whenever I refer to Refman, I'm talking about both classes.
  62. % When I'm talking about things that are special to one class I refer
  63. % to the filenames \file{refart} and \file{refrep}.
  64. %    \begin{macrocode}
  65. %<*driver>
  66. \documentclass{ltxdoc}
  67. %    \end{macrocode}
  68. %    We don't want everything to appear in the index
  69. %    \begin{macrocode}
  70. \DoNotIndex{\',\.,\@M,\@@input,\@addtoreset,\@arabic,\@badmath}
  71. \DoNotIndex{\@centercr,\@cite}
  72. \DoNotIndex{\@dotsep,\@empty,\@float,\@gobble,\@gobbletwo,\@ignoretrue}
  73. \DoNotIndex{\@input,\@ixpt,\@m}
  74. \DoNotIndex{\@minus,\@mkboth,\@ne,\@nil,\@nomath,\@plus,\@set@topoint}
  75. \DoNotIndex{\@tempboxa,\@tempcnta,\@tempdima,\@tempdimb}
  76. \DoNotIndex{\@tempswafalse,\@tempswatrue,\@viipt,\@viiipt,\@vipt}
  77. \DoNotIndex{\@vpt,\@warning,\@xiipt,\@xipt,\@xivpt,\@xpt,\@xviipt}
  78. \DoNotIndex{\@xxpt,\@xxvpt,\\,\ ,\addpenalty,\addtolength,\addvspace}
  79. \DoNotIndex{\advance,\Alph,\alph}
  80. \DoNotIndex{\arabic,\ast,\begin,\begingroup,\bfseries,\bgroup,\box}
  81. \DoNotIndex{\bullet}
  82. \DoNotIndex{\cdot,\cite,\CodelineIndex,\cr,\day,\DeclareOption}
  83. \DoNotIndex{\def,\DisableCrossrefs,\divide,\DocInput,\documentclass}
  84. \DoNotIndex{\DoNotIndex,\egroup,\ifdim,\else,\fi,\em,\endtrivlist}
  85. \DoNotIndex{\EnableCrossrefs,\end,\end@dblfloat,\end@float,\endgroup}
  86. \DoNotIndex{\endlist,\everycr,\everypar,\ExecuteOptions,\expandafter}
  87. \DoNotIndex{\fbox}
  88. \DoNotIndex{\filedate,\filename,\fileversion,\fontsize,\framebox,\gdef}
  89. \DoNotIndex{\global,\halign,\hangindent,\hbox,\hfil,\hfill,\hrule}
  90. \DoNotIndex{\hsize,\hskip,\hspace,\hss,\if@tempswa,\ifcase,\or,\fi,\fi}
  91. \DoNotIndex{\ifhmode,\ifvmode,\ifnum,\iftrue,\ifx,\fi,\fi,\fi,\fi,\fi}
  92. \DoNotIndex{\input}
  93. \DoNotIndex{\jobname,\kern,\leavevmode,\let,\leftmark}
  94. \DoNotIndex{\list,\llap,\long,\m@ne,\m@th,\mark,\markboth,\markright}
  95. \DoNotIndex{\month,\newcommand,\newcounter,\newenvironment}
  96. \DoNotIndex{\NeedsTeXFormat,\newdimen}
  97. \DoNotIndex{\newlength,\newpage,\nobreak,\noindent,\null,\number}
  98. \DoNotIndex{\numberline,\OldMakeindex,\OnlyDescription,\p@}
  99. \DoNotIndex{\pagestyle,\par,\paragraph,\paragraphmark,\parfillskip}
  100. \DoNotIndex{\penalty,\PrintChanges,\PrintIndex,\ProcessOptions}
  101. \DoNotIndex{\protect,\ProvidesClass,\raggedbottom,\raggedright}
  102. \DoNotIndex{\refstepcounter,\relax,\renewcommand,\reset@font}
  103. \DoNotIndex{\rightmargin,\rightmark,\rightskip,\rlap,\rmfamily,\roman}
  104. \DoNotIndex{\roman,\secdef,\selectfont,\setbox,\setcounter,\setlength}
  105. \DoNotIndex{\settowidth,\sfcode,\skip,\sloppy,\slshape,\space}
  106. \DoNotIndex{\symbol,\the,\trivlist,\typeout,\tw@,\undefined,\uppercase}
  107. \DoNotIndex{\usecounter,\usefont,\usepackage,\vfil,\vfill,\viiipt}
  108. \DoNotIndex{\viipt,\vipt,\vskip,\vspace}
  109. \DoNotIndex{\wd,\xiipt,\year,\z@}
  110. %    \end{macrocode}
  111. %    We do want an index, using linenumbers
  112. %    \begin{macrocode}
  113. \EnableCrossrefs
  114. %    \end{macrocode}
  115. %    We use so many \file{docstrip} modules that we set the
  116. %    \texttt{StandardModuleDepth} counter to 1.
  117. %    \begin{macrocode}
  118. \setcounter{StandardModuleDepth}{1}
  119. %    \end{macrocode}
  120. %    The following command retrieves the date and version information
  121. %    from the file.
  122. %    \begin{macrocode}
  123. \GetFileInfo{refman.drv}
  124. %    \end{macrocode}
  125. %    Some commonly used abbreviations
  126. %    \begin{macrocode}
  127. \newcommand\Lopt[1]{\textsf {#1}}
  128. \newcommand\file[1]{\texttt {#1}}
  129. \newcommand\Lcount[1]{\textsl {\small#1}}
  130. \newcommand\pstyle[1]{\textsl {#1}}
  131. %    \end{macrocode}
  132. %    We also want the full details.
  133. %    \begin{macrocode}
  134. \begin{document}
  135. \DocInput{refman.dtx}
  136. \PrintIndex
  137. % ^^A\PrintChanges
  138. \end{document}
  139. %</driver>
  140. %    \end{macrocode}
  141. % \fi
  142. % \title{Document Class \texttt{refman} for \LaTeX{} version 2e\thanks
  143. %    {This file has version number \fileversion, last revised
  144. %    \filedate.}}
  145. % \author{%
  146. % Copyright (C) 1988 by Hubert Partl \and
  147. % Copyright (C) 1994-94 by Axel Kielhorn
  148. % \date{\filedate}
  149. % \maketitle
  150. % \tableofcontents
  151. % \StopEventually{}    ^^A 
  152. % \section{The {\sc docstrip} modules}
  153. % The following modules are used in the implementation to direct
  154. % {\sc docstrip} in generating the external files:
  155. % \begin{center}
  156. % \begin{tabular}{ll}
  157. %   refart & produce the documentclass refart\\
  158. %   refrep   & produce the documentclass refrep\\
  159. %   driver   & produce a documentation driver file \\
  160. % \end{tabular}
  161. % \end{center}
  162. % \section{Initial Code}
  163. %    In this part we define a few commands that are used later on.
  164. % \begin{macro}{\@ptsize}
  165. %    This control sequence is used to store the second digit of the
  166. %    pointsize we are typesetting in. So, normally, it's value is one
  167. %    of 0, 1 or 2.
  168. %    \begin{macrocode}
  169. %<*refart|refrep>
  170. \newcommand\@ptsize{}
  171. %    \end{macrocode}
  172. % \end{macro}
  173. % \begin{macro}{\if@restonecol}
  174. %    Only the index may be printed in twocolumn-layout, but this is not 
  175. %    implemented yet. Nevertheless we provide the neccesary commands.
  176. %    \begin{macrocode}
  177. \newif\if@restonecol
  178. %    \end{macrocode}
  179. % \end{macro}
  180. % \begin{macro}{\if@titlepage}
  181. %    A switch to indicate if a titlepage has to be produced.  For the
  182. %    \file{refart} document class the default is not to make a seperate
  183. %    titlepage.
  184. %    \begin{macrocode}
  185. \newif\if@titlepage
  186. %<+refart>\@titlepagefalse
  187. %<+refrep>\@titlepagetrue
  188. %    \end{macrocode}
  189. % \end{macro}
  190. % \begin{macro}{\if@openright}
  191. %    A switch to indicate if chapters must start on a right-hand page.
  192. %    The default for the \file{refman} class is no. There are no
  193. %    chapters in the \file{refart} class
  194. %    \begin{macrocode}
  195. %<+refrep>\newif\if@openright
  196. %    \end{macrocode}
  197. % \end{macro}
  198. % \begin{macro}{\if@openbib}
  199. %    A switch to indicate if the bibliography has to be produced in
  200. %    the ``open'' format. The default is to use a ``closed'' format.
  201. %    \begin{macrocode}
  202. \newif\if@openbib
  203. \@openbibfalse
  204. %    \end{macrocode}
  205. % \end{macro}
  206. % \section{Declaration of Options}
  207. % \subsection{Setting Paper Sizes}
  208. %    The variables |\paperwidth| and |\paperheight| should reflect the
  209. %    physical paper size after trimming. For desk printer output this
  210. %    is usually the real paper size since there is no post-processing.
  211. %    Classes for real book production will probably add other paper
  212. %    sizes and additionally the production of crop marks for trimming.
  213. %    Since \file{repbook} does not exist now you may change the
  214. %    papersizes if needed.
  215. %    \begin{macrocode}
  216. \DeclareOption{a4paper}
  217.    {\setlength\paperheight {297mm}%
  218.     \setlength\paperwidth  {210mm}}
  219. \DeclareOption{a5paper}
  220.    {\setlength\paperheight {210mm}%
  221.     \setlength\paperwidth  {148mm}}
  222. \DeclareOption{b5paper}
  223.    {\setlength\paperheight {250mm}%
  224.     \setlength\paperwidth  {176mm}}
  225. \DeclareOption{letterpaper}
  226.    {\setlength\paperheight {11in}%
  227.     \setlength\paperwidth  {8.5in}}
  228. \DeclareOption{legalpaper}
  229.    {\setlength\paperheight {14in}%
  230.     \setlength\paperwidth  {8.5in}}
  231. \DeclareOption{executivepaper}
  232.    {\setlength\paperheight {10.5in}%
  233.     \setlength\paperwidth  {7.25in}}
  234. %    \end{macrocode}
  235. %    The option \Lopt{landscape} switches the values of |\paperheight|
  236. %    and |\paperwidth|, assuming the dimensions were given for portrait
  237. %    paper.
  238. %    \begin{macrocode}
  239. \DeclareOption{landscape}
  240.    {\setlength\@tempdima   {\paperheight}%
  241.     \setlength\paperheight {\paperwidth}%
  242.     \setlength\paperwidth  {\@tempdima}}
  243. %    \end{macrocode}
  244. %    The option \Lopt{square} assigns the values of |\paperwidth|
  245. %    to |\paperheight|, which will result in a square layout.
  246. %    If you use \Lopt{landscape} first you will get a square layout
  247. %    which uses the height of yo you original paper.
  248. %    \begin{macrocode}
  249. \DeclareOption{square}
  250.    {\setlength\paperheight {\paperwidth}}
  251. %    \end{macrocode}
  252. % \subsection{Choosing the type size}
  253. %    The type size options are handled by defining |\@ptsize| to contain
  254. %    the last digit of the size in question and branching on |\ifcase|
  255. %    statements. This is done for historical reasons to stay compatible
  256. %    with other packages that use the |\@ptsize| variable to select
  257. %    special actions. It makes the declarations of size options less
  258. %    than 10pt difficult, although one can probably use \texttt{9}
  259. %    and \texttt{8} assuming that a class wont define both
  260. %    \Lopt{8pt} and \Lopt{18pt} options.
  261. %    \begin{macrocode}
  262. \DeclareOption{10pt}{\renewcommand\@ptsize{0}}
  263. \DeclareOption{11pt}{\renewcommand\@ptsize{1}}
  264. \DeclareOption{12pt}{\renewcommand\@ptsize{2}}
  265. %    \end{macrocode}
  266. %  \subsection{Two-side or one-side printing}
  267. %    For two-sided printing we use the switch |\if@twoside|.
  268. %    We set  |\if@mparswitch| which does nothing now but
  269. %    is kept for compatibility reasons. It may vanish in the
  270. %    final 2.0 version.
  271. %    \begin{macrocode}
  272. \DeclareOption{oneside}{\@twosidefalse \@mparswitchfalse}
  273. \DeclareOption{twoside}{\@twosidetrue  \@mparswitchtrue}
  274. %    \end{macrocode}
  275. %  \subsection{Draft option}
  276. %    If the user requests \Lopt{draft} we show any overfull boxes.
  277. %    We could probably add some more interesting stuff to this option.
  278. %    \begin{macrocode}
  279. \DeclareOption{draft}{\setlength\overfullrule{5pt}}
  280. \DeclareOption{final}{\setlength\overfullrule{0pt}}
  281. %    \end{macrocode}
  282. %  \subsection{Titlepage option}
  283. %    A refman usually has no separate titlepage, but the user can
  284. %    request one.
  285. %    \begin{macrocode}
  286. \DeclareOption{titlepage}{\@titlepagetrue}
  287. \DeclareOption{notitlepage}{\@titlepagefalse}
  288. %    \end{macrocode}
  289. %  \subsection{openright option}
  290. %    This option determines whether or not a chapter must start on
  291. %    a right-hand page and request one.
  292. %    \begin{macrocode}
  293. %<+refrep>\DeclareOption{openright}{\@openrighttrue}
  294. %<+refrep>\DeclareOption{openany}{\@openrightfalse}
  295. %    \end{macrocode}
  296. %  \subsection{Twocolumn printing}
  297. %    Two-column is used in the index. There is no user command
  298. %    or option to request twocolumn printing. Therefore
  299. %    \Lopt{twocolumn} will lead to an error message.
  300. %    \begin{macrocode}
  301. \DeclareOption{onecolumn}{\@twocolumnfalse}
  302. \DeclareOption{twocolumn}{%
  303. %<+refart>    \ClassError{Refart}
  304. %<+refrep>    \ClassError{Refrep}
  305.     {There is no twocolumn layout in this class!}
  306.     {Can you imagine how twocolumn layout will look\MessageBreak
  307.      in this class? That's why!}
  308.     \@twocolumnfalse}
  309. %    \end{macrocode}
  310. %  \subsection{Equation numbering on the left}
  311. %    The option \Lopt{leqno} can be used to get the equation numbers
  312. %    on the left side of the equation. \file{leqno.clo} is defined in
  313. %    \file{classes.dtx}.
  314. %    \begin{macrocode}
  315. \DeclareOption{leqno}{\input{leqno.clo}}
  316. %    \end{macrocode}
  317. %  \subsection{Flush left displays}
  318. %    The option \Lopt{fleqn} redefines the displayed math environmens
  319. %    in such a way that they come out flush left, with an indentation
  320. %    of |\mathindent| from the prevailing left margin.\file{fleqn.clo}
  321. %    is defined in \file{classes.dtx}.
  322. %    \begin{macrocode}
  323. \DeclareOption{fleqn}{\input{fleqn.clo}}
  324. %    \end{macrocode}
  325. % \subsection{Open bibliography}
  326. %    The option \Lopt{openbib} produces the ``open'' bibliography
  327. %    style, in which each block starts on a new line, and succeeding
  328. %    lines in a block are indented by |\bibindent|.
  329. %    \begin{macrocode}
  330. \DeclareOption{openbib}{\@openbibtrue}
  331. %    \end{macrocode}
  332. % \subsection{User flags}
  333. %   There are some flags the user may change to control the
  334. %   behaviour of some commands:
  335. %   \begin{macro}{\ifdescriptioncolon}
  336. %   This switch controls whether there is a colon in the
  337. %   description item or not.
  338. %    \begin{macrocode}
  339. \newif\ifdescriptioncolon \descriptioncolontrue
  340. %    \end{macrocode}
  341. %   \end{macro}
  342. %   \begin{macro}{\ifdescriptionleft}
  343. %   This switch controls whether the description items
  344. %   are set left bound or right bound.
  345. %    \begin{macrocode}
  346. \newif\ifdescriptionleft  \descriptionleftfalse
  347. %    \end{macrocode}
  348. %   \end{macro}
  349. %   \begin{macro}{\ifmaxipagerule}
  350. %   This switch controls whether there is a rule at the
  351. %   beginning and end of a maxipage. This flag may later be used
  352. %   to select rules at other places (like part or chapter) as well.
  353. %    \begin{macrocode}
  354. \newif\ifmaxipagerule     \maxipageruletrue
  355. %    \end{macrocode}
  356. %   \end{macro}
  357. % \section{Executing Options}
  358. %    Here we execute the default options to initialize certain
  359. %    variables.
  360. %    \begin{macrocode}
  361. %<*refart>
  362. \ExecuteOptions{letterpaper,10pt,oneside,onecolumn,final}
  363. %</refart>
  364. %<*refrep>
  365. \ExecuteOptions{letterpaper,10pt,oneside,onecolumn,final,openany}
  366. %</refrep>
  367. %    \end{macrocode}
  368. %    The |\ProcessOptions| command causes the execution of the code
  369. %    for every option \Lopt{FOO}
  370. %    which is declared and for which the user typed
  371. %    the \Lopt{FOO} option in his
  372. %    |\documentclass| command.  For every option \Lopt{BAR} he typed,
  373. %    which is not declared, the option is assumed to be a global option.
  374. %    All options will be passed as document options to any
  375. %    |\usepackage| command in the document preamble.
  376. %    \begin{macrocode}
  377. \ProcessOptions
  378. %    \end{macrocode}
  379. %    Now that all the options have been executed we can load the
  380. %    chosen class option file that contains all size dependent code.
  381. %    We are using the \file{sizexx.clo} Files from classes.dtx now
  382. %    and do the page layout caculation inside the class-file.
  383. %    \begin{macrocode}
  384. %<*refart|refrep>
  385. \input{size1\@ptsize.clo}
  386. %</refart|refrep>
  387. %    \end{macrocode}
  388. %  \section{Loading Packages}
  389. %  The standard class files do not load additional packages.
  390. % \section{Document Layout}
  391. % \label{sec:maincode}
  392. %  In this section we are finally dealing with the nasty typographical
  393. %  details.
  394. % \subsection{Fonts}
  395. %    \LaTeX\ offers the user commands to change the size of the font,
  396. %    relative to the `main' size. Each relative size changing command
  397. %    |\size| executes the command
  398. %    |\@setfontsize||\size|\meta{font-size}\meta{baselineskip} where:
  399. %    \begin{description}
  400. %    \item[\meta{font-size}] The absolute size of the font to use from
  401. %        now on.
  402. %    \item[\meta{baselineskip}] The normal value of |\baselineskip|
  403. %        for the size of the font selected. (The actual value will be
  404. %        |\baselinestretch| * \meta{baselineskip}.)
  405. %    \end{description}
  406. %    A number of commands, defined in the \LaTeX{} kernel, shorten the
  407. %    following  definitions and are used throughout. They are:
  408. % \begin{center}
  409. % \begin{tabular}{ll@{\qquad}ll@{\qquad}ll}
  410. %  \verb=\@vpt= & 5 & \verb=\@vipt= & 6 & \verb=\@viipt= & 7 \\
  411. %  \verb=\@viiipt= & 8 & \verb=\@ixpt= & 9 & \verb=\@xpt= & 10 \\
  412. %  \verb=\@xipt= & 10.95 & \verb=\@xiipt= & 12 & \verb=\@xivpt= & 14.4\\
  413. %  ...
  414. %  \end{tabular}
  415. %  \end{center}
  416. % \begin{macro}{\normalsize}
  417. % \begin{macro}{\@normalsize}
  418. %    The user level command for the main size is |\normalsize|.
  419. %    Internally \LaTeX{} uses |\@normalsize| when it refers to the
  420. %    main size. |\@normalsize| will be defined to work like
  421. %    |\normalsize| if the latter is redefined from its default
  422. %    definition (that just issues an error message). Otherwise
  423. %    |\@normalsize| simply selects a 10pt/12pt size.
  424. %    See \file{classes.dtx} for documentaion on \file{sizexx.clo}
  425. % \end{macro}
  426. % \end{macro}
  427. % \subsection{Paragraphing}
  428. % \begin{macro}{\lineskip}
  429. % \begin{macro}{\normallineskip}
  430. %    These parameters control \TeX's behaviour when two lines tend to
  431. %    come too close together.
  432. %    \begin{macrocode}
  433. %<*refart|refrep>
  434. \setlength\lineskip{1\p@}
  435. \setlength\normallineskip{1\p@}
  436. %    \end{macrocode}
  437. % \end{macro}
  438. % \end{macro}
  439. % \begin{macro}{\baselinestretch}
  440. %    This is used as a multiplier for |\baselineskip|. The default is
  441. %    to {\em not\/} stretch the baselines.
  442. %    \begin{macrocode}
  443. \renewcommand\baselinestretch{}
  444. %    \end{macrocode}
  445. % \end{macro}
  446. % \begin{macro}{\parskip}
  447. % \begin{macro}{\parindent}
  448. %    |\parskip| gives extra vertical space between paragraphs and
  449. %    |\parindent| is the width of the paragraph indentation. The value
  450. %    of |\parindent| is set to 0.
  451. %    \begin{macrocode}
  452. \setlength\parskip{0.5\baselineskip \@plus 2\p@}
  453. \setlength\parindent {\z@}
  454. %    \end{macrocode}
  455. % \end{macro}
  456. % \end{macro}
  457. % \begin{macro}{\@lowpenalty}
  458. % \begin{macro}{\@medpenalty}
  459. % \begin{macro}{\@highpenalty}%
  460. %    The commands |\nopagebreak| and |\nolinebreak| put in penalties
  461. %    to discourage these breaks at the point they are put in.
  462. %    They use |\@lowpenalty|, |\@medpenalty| or |\@highpenalty|,
  463. %    dependent on their argument.
  464. %    \begin{macrocode}
  465. \@lowpenalty   51
  466. \@medpenalty  151
  467. \@highpenalty 301
  468. %    \end{macrocode}
  469. % \end{macro}
  470. % \end{macro}
  471. % \end{macro}
  472. % \begin{macro}{\clubpenalty}
  473. % \begin{macro}{\widowpenalty}
  474. %    These penalties are use to discourrage club and widow lines.
  475. %    Because we use their default values we only show them here,
  476. %    commented out.
  477. %    \begin{macrocode}
  478. % \clubpenalty  150
  479. % \widowpenalty 150
  480. %    \end{macrocode}
  481. % \end{macro}
  482. % \end{macro}
  483. % \begin{macro}{\displaywidowpenalty}
  484. % \begin{macro}{\predisplaypenalty}
  485. % \begin{macro}{\postdisplaypenalty}
  486. %    Discourrage (but not so much) widows in front of a math display
  487. %    and forbid breaking directly in front of a display. Allow break
  488. %    after a display without a penalty. Again the default values are
  489. %    used, therefore we only show them here.
  490. %    \begin{macrocode}
  491. % \displaywidowpenalty 50
  492. % \predisplaypenalty   10000
  493. % \postdisplaypenalty  0
  494. %    \end{macrocode}
  495. % \end{macro}
  496. % \end{macro}
  497. % \end{macro}
  498. % \begin{macro}{\interlinepenalty}
  499. %    Allow the breaking of a page in the middle of a paragraph.
  500. %    \begin{macrocode}
  501. % \interlinepenalty 0
  502. %    \end{macrocode}
  503. % \end{macro}
  504. % \begin{macro}{\brokenpenalty}
  505. %    We allow the breaking of a page after a hyphenated line.
  506. %    \begin{macrocode}
  507. % \brokenpenalty 100
  508. %</refart|refrep>
  509. %    \end{macrocode}
  510. % \end{macro}
  511. % \subsection{Page Layout}
  512. %    All margin dimensions are measured from a point one inch from the
  513. %    top and lefthand side of the page.
  514. % \subsubsection{Vertical spacing}
  515. % \begin{macro}{\headheight}
  516. % \begin{macro}{\headsep}
  517. % \begin{macro}{\topskip}
  518. %    The |\headheight| is the height of the box that will contain the
  519. %    running head. The |\headsep| is the distance between the bottom
  520. %    of the running head and the top of the text. |\topskip| is the
  521. %    |\baselineskip| for the first line on a page. Only the definition
  522. %    of |\headsep| differs from \file{sizexx} and has to be changed.
  523. %    \begin{macrocode}
  524. %<*refart|refrep>
  525. \setlength\headsep   {\baselineskip}
  526. %    \end{macrocode}
  527. % \end{macro}
  528. % \end{macro}
  529. % \end{macro}
  530. % \subsubsection{The dimension of text}
  531. % \begin{macro}{\fullwidth}
  532. % \begin{macro}{\textwidth}
  533. % \begin{macro}{\leftmarginwidth}
  534. %    There is no need to supply a compatibility mode since the
  535. %    independend \texttt{refman.sty} was never released to the
  536. %    public.
  537. %    We will set the dimensions differently,
  538. %    taking into account the paper size for instance.
  539. %    First, we calculate the maximum textwidth, which will fit on the
  540. %    selected paper and store it in |\@tempdima|.
  541. %    \begin{macrocode}
  542. \newdimen\leftmarginwidth
  543. \newdimen\fullwidth
  544. %    \end{macrocode}
  545. % \end{macro}
  546. % \end{macro}
  547. % \end{macro}
  548. % \begin{macro}{\emptyfoottopmargin}
  549. % \begin{macro}{\emptyheadtopmargin}
  550. %    \begin{macrocode}
  551. \newdimen\emptyfoottopmargin
  552. \newdimen\emptyheadtopmargin
  553. %    \end{macrocode}
  554. % \end{macro}
  555. % \end{macro}
  556. %  We define a macro to change the fraction of the part of
  557. %  |\fullwidth| that is occupied with text. There are no
  558. %  sanitychecks so make sure this is less or equal to 1.
  559. %  \begin{macro}{\settextfraction}
  560. %    \begin{macrocode}
  561. \newcommand\settextfraction[1]%
  562.   \setlength\@tempdima{\paperwidth}
  563.   \addtolength\@tempdima{-2in}
  564. %    \end{macrocode}
  565. % \end{macro}
  566. %    Now we can set the |\textwidth|, depending on whether we will be
  567. %    setting one or two columns.
  568. %    \begin{macrocode}
  569.   \if@twocolumn
  570.       \setlength\textwidth{\@tempdima}
  571.   \else
  572.       \setlength\fullwidth{\@tempdima}
  573.       \@settopoint\fullwidth
  574.       \setlength\textwidth{#1\fullwidth} % This may change
  575.   \fi
  576. %    \end{macrocode}
  577. %    Here we modify the width of the text a little to be a whole
  578. %    number of points.
  579. %    \begin{macrocode}
  580.   \@settopoint\textwidth
  581.   \setlength\leftmarginwidth{\fullwidth}
  582.   \addtolength\leftmarginwidth{-\textwidth}
  583. %    \end{macrocode}
  584. % \subsubsection{Horizontal margins}
  585. % \begin{macro}{\oddsidemargin}
  586. % \begin{macro}{\evensidemargin}
  587. % \begin{macro}{\marginparwidth}
  588. %    The values for |\oddsidemargin| and |\marginparwidth| will be set
  589. %    independing on the status of the |\if@twoside|. (We have the same
  590. %    layout on odd and even pages.)
  591. %    For one-sided printing we center the text on the page, by
  592. %    calculating the difference between |textwidth| and
  593. %    |\paperwidth|$-$|2in|. Half of that difference is than used for
  594. %    the margin. The amount of space that can be used for marginal
  595. %    notes is |leftmarginwidth| $-$ |marginparsep|
  596. %    to which we add any `leftover' space.
  597. %    \begin{macrocode}
  598.   \setlength\@tempdima        {\paperwidth}
  599.   \addtolength\@tempdima      {-2in}
  600.   \addtolength\@tempdima      {-\fullwidth}
  601.   \setlength\oddsidemargin    {.5\@tempdima}
  602.   \addtolength\oddsidemargin  {\leftmarginwidth}
  603.   \@settopoint\oddsidemargin
  604. %    \end{macrocode}
  605. %    Then |\evensidemargin| and |\marginparwidth| are set to 
  606. %    |\oddsidemargin|. |\marginparwidth| will be modified later.
  607. %    \begin{macrocode}
  608.   \setlength\evensidemargin  {\oddsidemargin}
  609.   \setlength\marginparwidth  {\oddsidemargin}
  610. %    \end{macrocode}
  611. % \end{macro}
  612. % \end{macro}
  613. % \end{macro}
  614. % \begin{macro}{\marginparsep}
  615. % \begin{macro}{\marginparpush}
  616. %    The horizontal space between the main text and marginal notes is
  617. %    determined by |\marginparsep| (defined in \file{sizexx}),
  618. %    the minimum vertical separation
  619. %    between two marginal notes is controlled by |\marginparpush| which
  620. %    is set to 0 because we will have lots of margin notes. The width
  621. %    of the |marginpar| is reduced by |marginparsep| to produce flushleft
  622. %    pages.
  623. %    \begin{macrocode}
  624.   \addtolength\marginparwidth {-\marginparsep}
  625.   \setlength\marginparpush{0\p@}
  626. %    \end{macrocode}
  627. % \end{macro}
  628. % \end{macro}
  629. %  Now we call |\settextfraction| with the default value of 0.7
  630. %    \begin{macrocode}
  631. \settextfraction    {0.7}
  632. %    \end{macrocode}
  633. % \begin{macro}{\textheight}
  634. %    Now that we have computed the width of the text, we have to take
  635. %    care of the height. The |\textheight| is the height of text
  636. %    (including footnotes and figures, excluding running head and
  637. %    foot).
  638. %    Again we compute this, depending on the papersize and depending
  639. %    on the baselineskip that is used, in order to have a whole number
  640. %    of lines on the page.
  641. %    \begin{macrocode}
  642. \setlength\@tempdima{\paperheight}
  643. %    \end{macrocode}
  644. %    We leave at least a 1 inch margin on the top and the bottom of
  645. %    the page.
  646. %    \begin{macrocode}
  647. \addtolength\@tempdima{-2in}
  648. %    \end{macrocode}
  649. %    The running headers and footers extend partly into the top
  650. %    and bottom margins.
  651. %    \begin{macrocode}
  652. \addtolength\@tempdima{-.5in}
  653. %    \end{macrocode}
  654. %    Then we divide the result by the current |\baselineskip| and
  655. %    store this in the count register |\@tempcnta|, which then
  656. %    contains the number of lines that fit on this page.
  657. %    \begin{macrocode}
  658. \divide\@tempdima\baselineskip
  659. \@tempcnta=\@tempdima
  660. %    \end{macrocode}
  661. %    From this we can calculate the height of the text.
  662. %    \begin{macrocode}
  663. \setlength\textheight{\@tempcnta\baselineskip}
  664. %    \end{macrocode}
  665. %    The first line on the page has a height of |\topskip|.
  666. %    \begin{macrocode}
  667. \advance\textheight by \topskip
  668. %    \end{macrocode}
  669. % \end{macro}
  670. % \subsubsection{Vertical margins}
  671. % \begin{macro}{\topmargin}
  672. %    The |\topmargin| is the distance between the top of `the
  673. %    printable area' --which is 1 inch below the top of the paper--
  674. %    and the top of the box which contains the running head.
  675. %    It can now be computed from the values set above.
  676. %    \begin{macrocode}
  677. \setlength\topmargin{\paperheight}
  678. \addtolength\topmargin{-2in}
  679. \addtolength\topmargin{-\headheight}
  680. \addtolength\topmargin{-\headsep}
  681. \addtolength\topmargin{-\textheight}
  682. \addtolength\topmargin{-\footskip}     % this might be wrong!
  683. %    \end{macrocode}
  684. %    By changing the factor in the next line the complete page
  685. %    can be shifted vertically.
  686. %    The contents of the page is shifted up or down by one
  687. %    |\baselineskip| depending on the pagestyle.
  688. %    Do not combine headings and footings
  689. %    in one document!
  690. %    \begin{macrocode}
  691. \addtolength\topmargin{-.5\topmargin}
  692. \@settopoint\topmargin
  693. \setlength\emptyfoottopmargin{\topmargin}
  694. \addtolength\emptyfoottopmargin{\baselineskip}
  695. \setlength\emptyheadtopmargin{\topmargin}
  696. \addtolength\emptyheadtopmargin{-\baselineskip}
  697. %</refart|refrep>
  698. %    \end{macrocode}
  699. % \end{macro}
  700. % \subsubsection{Float placement parameters}
  701. % All float parameters are given default values in the \LaTeXe{}
  702. % kernel. For this reason counters only need to be set with
  703. % |\setcounter| and other parameters are set using |\renewcommand|.
  704. % \paragraph{Limits for the placement of floating objects}
  705. % \begin{macro}{\c@topnumber}
  706. %    The \Lcount{topnumber} counter holds the maximum number of
  707. %    floats that can appear on the top of a text page.
  708. %    \begin{macrocode}
  709. %<*refart|refrep>
  710. \setcounter{topnumber}{2}
  711. %    \end{macrocode}
  712. % \end{macro}
  713. % \begin{macro}{\topfraction}
  714. %    This indicates the maximum part of a text page that can be
  715. %    occupied by floats at the top.
  716. %    \begin{macrocode}
  717. \renewcommand\topfraction{.7}
  718. %    \end{macrocode}
  719. % \end{macro}
  720. % \begin{macro}{\c@bottomnumber}
  721. %    The \Lcount{bottomnumber} counter holds the maximum number of
  722. %    floats that can appear on the bottom of a text page.
  723. %    \begin{macrocode}
  724. \setcounter{bottomnumber}{1}
  725. %    \end{macrocode}
  726. % \end{macro}
  727. % \begin{macro}{\bottomfraction}
  728. %    This indicates the maximum part of a text page that can be
  729. %    occupied by floats at the bottom.
  730. %    \begin{macrocode}
  731. \renewcommand\bottomfraction{.3}
  732. %    \end{macrocode}
  733. % \end{macro}
  734. % \begin{macro}{\c@totalnumber}
  735. %    This indicates the maximum number of floats that can appear on
  736. %    any text page.
  737. %    \begin{macrocode}
  738. \setcounter{totalnumber}{3}
  739. %    \end{macrocode}
  740. % \end{macro}
  741. % \begin{macro}{\textfraction}
  742. %    This indicates the minimum part of a text page that has to be
  743. %    occupied by text.
  744. %    \begin{macrocode}
  745. \renewcommand\textfraction{.2}
  746. %    \end{macrocode}
  747. % \end{macro}
  748. % \begin{macro}{\floatpagefraction}
  749. %    This indicates the minimum part of a page that has to be
  750. %    occupied by floating objects before a `float page' is produced.
  751. %    \begin{macrocode}
  752. \renewcommand\floatpagefraction{.5}
  753. %    \end{macrocode}
  754. % \end{macro}
  755. % \begin{macro}{\c@dbltopnumber}
  756. %    The \Lcount{dbltopnumber} counter holds the maximum number of
  757. %    two column floats that can appear on the top of a two column text
  758. %    page.
  759. %    \begin{macrocode}
  760. \setcounter{dbltopnumber}{2}
  761. %    \end{macrocode}
  762. % \end{macro}
  763. % \begin{macro}{\dbltopfraction}
  764. %    This indicates the maximum part of a two column text page that
  765. %    can be occupied by two column floats at the top.
  766. %    \begin{macrocode}
  767. \renewcommand\dbltopfraction{.7}
  768. %    \end{macrocode}
  769. % \end{macro}
  770. % \begin{macro}{\dblfloatpagefraction}
  771. %    This indicates the minimum part of a page that has to be
  772. %    occupied by two column wide floating objects before a `float
  773. %    page' is produced.
  774. %    \begin{macrocode}
  775. \renewcommand\dblfloatpagefraction{.5}
  776. %</refart|refrep>
  777. %    \end{macrocode}
  778. % \end{macro}
  779. % \subsection{Page Styles}
  780. %    The page style \pstyle{foo} is defined by defining the command
  781. %    |\ps@foo|.   This command should make only local definitions.
  782. %    There should be no stray spaces in the definition, since they
  783. %    could lead to mysterious extra spaces in the output (well, that's
  784. %    something that should be always avoided).
  785. % \begin{macro}{\@evenhead}
  786. % \begin{macro}{\@oddhead}
  787. % \begin{macro}{\@evenfoot}
  788. % \begin{macro}{\@oddfoot}
  789. %    The |\ps@...| command defines the macros |\@oddhead|,
  790. %    |\@oddfoot|, |\@evenhead|, and |\@evenfoot| to define the running
  791. %    heads and feet---e.g., |\@oddhead| is the macro to produce the
  792. %    contents of the heading box for odd-numbered pages.  It is called
  793. %    inside an |\hbox| of width |\textwidth|.
  794. % \end{macro}
  795. % \end{macro}
  796. % \end{macro}
  797. % \end{macro}
  798. % \subsubsection{Marking conventions}
  799. %    To make headings determined by the sectioning commands, the page
  800. %    style defines the commands |\chaptermark|, |\sectionmark|,
  801. %    \ldots, where |\chaptermark{|\meta{TEXT}|}| is called by
  802. %    |\chapter| to set a mark, and so on.
  803. %    The |\...mark| commands and the |\...head| macros are defined
  804. %    with the help of the following macros.  (All the |\...mark|
  805. %    commands should be initialized to no-ops.)
  806. %    \LaTeX{} extends \TeX's |\mark| facility by producing two kinds
  807. %    of marks, a `left' and a `right' mark, using the following
  808. %    commands:
  809. %    \begin{flushleft}
  810. %     |\markboth{|\meta{LEFT}|}{|\meta{RIGHT}|}|: Adds both marks.
  811. %     |\markright{|\meta{RIGHT}|}|: Adds a `right' mark.
  812. %     |\leftmark|: Used in the |\@oddhead|, |\@oddfoot|, |\@evenhead|
  813. %                  or |\@evenfoot| macros, it gets the current `left'
  814. %                  mark.  |\leftmark| works like \TeX's |\botmark|
  815. %                  command.
  816. %     |\rightmark|: Used in the |\@oddhead|, |\@oddfoot|, |\@evenhead|
  817. %                   or  |\@evenfoot| macros, it gets the current
  818. %                   `right' mark. |\rightmark| works like \TeX's
  819. %                   |\firstmark| command.
  820. %    \end{flushleft}
  821. %    The marking commands work reasonably well for right marks
  822. %    `numbered within' left marks--e.g., the left mark is changed by a
  823. %    |\chapter| command and the right mark is changed by a |\section|
  824. %    command.  However, it does produce somewhat anomalous results if
  825. %    two |\markboth|'s occur on the same page.
  826. %    Commands like |\tableofcontents| that should set the marks in some
  827. %    page styles use a |\@mkboth| command, which is |\let| by the
  828. %    pagestyle command (|\ps@...|)  to |\markboth| for setting the
  829. %    heading or to |\@gobbletwo| to do nothing.
  830. %    \begin{macrocode}
  831. % %%%\mark{{}{}}   % Initializes TeX's marks   <--- can vanish
  832. %    \end{macrocode}
  833. % \subsubsection{Defining the page styles}
  834. % \label{sec:pagestyle}
  835. %    The pagestyles \pstyle{empty} is defined in
  836. %    \file{latex.dtx}.
  837. % \begin{macro}{\ps@plain}
  838. %    We have to redefine \pstyle{plain} to support \Lopt{twoside}
  839. %    layout.
  840. %  \begin{macrocode}
  841. %<*refart|refrep>
  842. \if@twoside
  843.   \def\ps@plain{%
  844.     \let\@mkboth\@gobbletwo
  845.     \let\@oddhead\@empty
  846.     \let\@evenhead\@empty
  847.     \def\@oddfoot{\reset@font\rmfamily\hfil\thepage}
  848.     \def\@evenfoot{\reset@font\rmfamily\thepage\hfil}}
  849. \else
  850.   \def\ps@plain{%
  851.     \let\@mkboth\@gobbletwo
  852.     \let\@oddhead\@empty
  853.     \def\@oddfoot{\reset@font\rmfamily\hfil\thepage\hfil}
  854.     \let\@evenhead\@empty
  855.     \let\@evenfoot\@oddfoot}
  856. %  \end{macrocode}
  857. % \end{macro}
  858. % \begin{macro}{\ps@headings}
  859. %    The definition of the page style \pstyle{headings} has to be
  860. %    different for two sided printing than it is for one sided
  861. %    printing.
  862. %    \begin{macrocode}
  863. \if@twoside
  864.     \def\ps@headings{%
  865. %    \end{macrocode}
  866. %    The running feet are empty in this page style, the running head
  867. %    contains the page number and one of the marks.
  868. %    \begin{macrocode}
  869.       \let\@oddfoot\@empty\let\@evenfoot\@empty
  870.       \def\@evenhead{\hss\vbox to \z@{\vss\hsize=\fullwidth
  871.       \hbox to \fullwidth{\thepage\hfil\slshape\leftmark}
  872.       \vskip 3\p@ \hrule}}%
  873.       \def\@oddhead{\hss\vbox to \z@{\vss\hsize=\fullwidth
  874.       \hbox to \fullwidth{{\slshape\rightmark}\hfil\thepage}
  875.       \vskip 3\p@ \hrule}}%
  876. %    \end{macrocode}
  877. %    When using this page style, the contents of the running head is
  878. %    determined by the chapter and section titles. So we |\let|
  879. %    |\@mkboth| to |\markboth|.
  880. %    \begin{macrocode}
  881.       \let\@mkboth\markboth
  882. %    \end{macrocode}
  883. %   We shift the page one |\baselineskip| to the bottom to
  884. %   compensate for the headings.
  885. %    \begin{macrocode}
  886.       \topmargin\emptyfoottopmargin
  887. %</refart|refrep>
  888. %    \end{macrocode}
  889. %    For the refart document class we define |\sectionmark| to clear
  890. %    the right mark and put the number of the section (when it is
  891. %    numbered) and its title in the left mark. The rightmark is set by
  892. %    |\subsectionmark| to contain the subsection titles.
  893. %    Note the use of |##1| for the parameter of the |\sectionmark|
  894. %    command, which will be defined when |\ps@headings| is executed.
  895. %    \begin{macrocode}
  896. %<*refart>
  897.       \def\sectionmark##1{%
  898.         \markboth {\ifnum \c@secnumdepth >\z@
  899.             \thesection\hskip 1em\relax\fi
  900.             ##1}{}}%
  901.       \def\subsectionmark##1{%
  902.         \markright {\ifnum \c@secnumdepth >\@ne
  903.             \thesubsection\hskip 1em\relax \fi
  904.             ##1}}}
  905. %</refart>
  906. %    \end{macrocode}
  907. %    In the refrep document class we use the |\chaptermark|
  908. %    and |\sectionmark| macros to fill the running heads.
  909. %    Note the use of |##1| for the parameter of the |\chaptermark|
  910. %    command, which will be defined when |\ps@headings| is executed.
  911. %    \begin{macrocode}
  912. %<*refrep>
  913.       \def\chaptermark##1{%
  914.         \markboth {\ifnum \c@secnumdepth >\m@ne
  915.             \@chapapp\ \thechapter \ \fi
  916.             ##1}{}}%
  917.       \def\sectionmark##1{%
  918.         \markright {\ifnum \c@secnumdepth >\z@
  919.             \thesection \ \fi
  920.             ##1}}}
  921. %</refrep>
  922. %    \end{macrocode}
  923. %    The definition of |\ps@headings| for one sided printing can be
  924. %    much simpler, because we treat even and odd pages the same.
  925. %    Therefore we don't need to define |\@even...|.
  926. %    \begin{macrocode}
  927. %<*refart|refrep>
  928. \else
  929.     \def\ps@headings{%
  930.       \let\@oddfoot\@empty
  931.       \def\@oddhead{\hss\vbox to \z@{\vss\hsize=\fullwidth
  932.       \hbox to \fullwidth{{\slshape\rightmark}\hfil\thepage}
  933.       \vskip 3\p@ \hrule}}%
  934.       \let\@mkboth\markboth
  935. %</refart|refrep>
  936. %    \end{macrocode}
  937. %   We shift the page one |\baselineskip| to the bottom to
  938. %   compensate for the headings.
  939. %    \begin{macrocode}
  940.       \topmargin\emptyfoottopmargin
  941. %    \end{macrocode}
  942. %    We use |\markright| now instead of |\markboth| as we did for two
  943. %    sided printing.
  944. %    \begin{macrocode}
  945. %<*refart>
  946.       \def\sectionmark##1{%
  947.         \markright {\ifnum \c@secnumdepth >\m@ne
  948.             \thesection\hskip 1em\relax \fi
  949.             ##1}}}
  950. %</refart>
  951. %    \end{macrocode}
  952. %    \begin{macrocode}
  953. %<*refrep>
  954.       \def\chaptermark##1{%
  955.         \markright {\ifnum \c@secnumdepth >\m@ne
  956.             \@chapapp\ \thechapter \ \fi
  957.             ##1}}}
  958. %</refrep>
  959. %<*refart|refrep>
  960. %    \end{macrocode}
  961. % \end{macro}
  962. % \begin{macro}{\ps@footings}
  963. %    The definition of the page style \pstyle{footings} has to be
  964. %    different for two sided printing than it is for one sided
  965. %    printing.
  966. %    \begin{macrocode}
  967. \if@twoside
  968.     \def\ps@footings{%
  969. %    \end{macrocode}
  970. %    The running head is empty in this page style, the running foot
  971. %    contains the page number and one of the marks.
  972. %    \begin{macrocode}
  973.       \let\@oddhead\@empty\let\@evenhead\@empty
  974.       \def\@evenfoot{\hss\vbox to \z@{\vss\hsize=\fullwidth
  975.       \hrule \vskip 3\p@
  976.       \hbox to \fullwidth{\thepage\hfil\slshape\leftmark}}}%
  977.       \def\@oddfoot{\hss\vbox to \z@{\vss\hsize=\fullwidth
  978.       \hrule \vskip 3\p@
  979.       \hbox to \fullwidth{{\slshape\rightmark}\hfil\thepage}}}%
  980. %    \end{macrocode}
  981. %    When using this page style, the contents of the running foot is
  982. %    determined by the chapter and section titles. So we |\let|
  983. %    |\@mkboth| to |\markboth|.
  984. %    \begin{macrocode}
  985.       \let\@mkboth\markboth
  986. %    \end{macrocode}
  987. %   We shift the page one |\baselineskip| to the top to
  988. %   compensate for the footings.
  989. %    \begin{macrocode}
  990.       \topmargin\emptyheadtopmargin
  991. %</refart|refrep>
  992. %    \end{macrocode}
  993. %    For the refart document class we define |\sectionmark| to clear
  994. %    the right mark and put the number of the section (when it is
  995. %    numbered) and its title in the left mark. The rightmark is set by
  996. %    |\subsectionmark| to contain the subsection titles.
  997. %    Note the use of |##1| for the parameter of the |\sectionmark|
  998. %    command, which will be defined when |\ps@headings| is executed.
  999. %    \begin{macrocode}
  1000. %<*refart>
  1001.       \def\sectionmark##1{%
  1002.         \markboth {\ifnum \c@secnumdepth >\z@
  1003.             \thesection\hskip 1em\relax\fi
  1004.             ##1}{}}%
  1005.       \def\subsectionmark##1{%
  1006.         \markright {\ifnum \c@secnumdepth >\@ne
  1007.             \thesubsection\hskip 1em\relax \fi
  1008.             ##1}}}
  1009. %</refart>
  1010. %    \end{macrocode}
  1011. %    In the refrep document class we use the |\chaptermark|
  1012. %    and |\sectionmark| macros to fill the running heads.
  1013. %    Note the use of |##1| for the parameter of the |\chaptermark|
  1014. %    command, which will be defined when |\ps@footings| is executed.
  1015. %    \begin{macrocode}
  1016. %<*refrep>
  1017.       \def\chaptermark##1{%
  1018.         \markboth {\ifnum \c@secnumdepth >\m@ne
  1019.             \@chapapp\ \thechapter \ \fi
  1020.             ##1}{}}%
  1021.       \def\sectionmark##1{%
  1022.         \markright {\ifnum \c@secnumdepth >\z@
  1023.             \thesection \ \fi
  1024.             ##1}}}
  1025. %</refrep>
  1026. %    \end{macrocode}
  1027. %    The definition of |\ps@footings| for one sided printing can be
  1028. %    much simpler, because we treat even and odd pages the same.
  1029. %    Therefore we don't need to define |\@even...|.
  1030. %    \begin{macrocode}
  1031. %<*refart|refrep>
  1032. \else
  1033.     \def\ps@footings{%
  1034.       \let\@oddhead\@empty
  1035.       \def\@oddfoot{\hss\vbox to \z@{\vss\hsize=\fullwidth
  1036.       \hrule \vskip 3\p@
  1037.       \hbox to \fullwidth{{\slshape\rightmark}\hfil\thepage}}}%
  1038.       \let\@mkboth\markboth
  1039. %    \end{macrocode}
  1040. %   We shift the page one |\baselineskip| to the top to
  1041. %   compensate for the footings.
  1042. %    \begin{macrocode}
  1043.       \topmargin\emptyheadtopmargin
  1044. %</refart|refrep>
  1045. %    \end{macrocode}
  1046. %    We use |\markright| now instead of |\markboth| as we did for two
  1047. %    sided printing.
  1048. %    \begin{macrocode}
  1049. %<*refart>
  1050.       \def\sectionmark##1{%
  1051.         \markright {\ifnum \c@secnumdepth >\m@ne
  1052.             \thesection\hskip 1em\relax \fi
  1053.             ##1}}}
  1054. %</refart>
  1055. %    \end{macrocode}
  1056. %    \begin{macrocode}
  1057. %<*refrep>
  1058.       \def\chaptermark##1{%
  1059.         \markright {\ifnum \c@secnumdepth >\m@ne
  1060.             \@chapapp\ \thechapter \ \fi
  1061.             ##1}}}
  1062. %</refrep>
  1063. %<*refart|refrep>
  1064. %    \end{macrocode}
  1065. % \end{macro}
  1066. % \begin{macro}{\ps@myheadings}
  1067. %    The definition of the page style \pstyle{myheadings} is fairly
  1068. %    simple because the user determines the contents of the running
  1069. %    head himself by using the |\markboth| and |\markright| commands.
  1070. %    \begin{macrocode}
  1071. \def\ps@myheadings{%
  1072.     \let\@oddfoot\@empty\let\@evenfoot\@empty
  1073.     \def\@evenhead{\hss\vbox to \z@{\vss\hsize=\fullwidth
  1074.     \hbox to \fullwidth{\thepage\hfil\slshape\leftmark}
  1075.     \vskip 3\p@ \hrule}}%
  1076.     \def\@oddhead{\hss\vbox to \z@{\vss\hsize=\fullwidth
  1077.     \hbox to \fullwidth{{\slshape\rightmark}\hfil\thepage}
  1078.     \vskip 3\p@ \hrule}}%
  1079. %    \end{macrocode}
  1080. %    We have to make sure that the marking commands that are used by
  1081. %    the chapter and section headings are disabled. We do this
  1082. %    |\let|ting them to a macro that gobbles its argument(s).
  1083. %    \begin{macrocode}
  1084.     \let\@mkboth\@gobbletwo
  1085. %<+refrep>    \let\chaptermark\@gobble
  1086.     \let\sectionmark\@gobble
  1087. %<+refart>    \let\subsectionmark\@gobble
  1088. %    \end{macrocode}
  1089. %   We shift the page one |\baselineskip| to the bottom to
  1090. %   compensate for the headings.
  1091. %    \begin{macrocode}
  1092.     \topmargin\emptyfoottopmargin
  1093.     }
  1094. %    \end{macrocode}
  1095. % \end{macro}
  1096. % \begin{macro}{\ps@myfootings}
  1097. %    The definition of the page style \pstyle{myfootings} is fairly
  1098. %    simple because the user determines the contents of the running
  1099. %    head himself by using the |\markboth| and |\markright| commands.
  1100. %    \begin{macrocode}
  1101. \def\ps@myfootings{%
  1102.       \let\@oddhead\@empty\let\@evenhead\@empty
  1103.       \def\@evenfoot{\hss\vbox to \z@{\vss\hsize=\fullwidth
  1104.       \hrule \vskip 3\p@
  1105.       \hbox to \fullwidth{\thepage\hfil\slshape\leftmark}}}%
  1106.       \def\@oddfoot{\hss\vbox to \z@{\vss\hsize=\fullwidth
  1107.       \hrule \vskip 3\p@
  1108.       \hbox to \fullwidth{{\slshape\rightmark}\hfil\thepage}}}%
  1109. %    \end{macrocode}
  1110. %    We have to make sure that the marking commands that are used by
  1111. %    the chapter and section footings are disabled. We do this
  1112. %    |\let|ting them to a macro that gobbles its argument(s).
  1113. %    \begin{macrocode}
  1114.     \let\@mkboth\@gobbletwo
  1115. %<+refrep>    \let\chaptermark\@gobble
  1116.     \let\sectionmark\@gobble
  1117. %<+refart>    \let\subsectionmark\@gobble
  1118. %    \end{macrocode}
  1119. %   We shift the page one |\baselineskip| to the top to
  1120. %   compensate for the footings.
  1121. %    \begin{macrocode}
  1122.     \topmargin\emptyheadtopmargin
  1123.     }
  1124. %    \end{macrocode}
  1125. % \end{macro}
  1126. % \section{Document Markup}
  1127. % \subsection{The title}
  1128. % \begin{macro}{\title}
  1129. % \begin{macro}{\author}
  1130. % \begin{macro}{\date}
  1131. %    These three macros are provided by \file{latex.dtx} to provide
  1132. %    information about the title, author(s) and date of the document.
  1133. %    The information is stored away in internal control sequences.
  1134. %    It is the task of the |\maketitle| command to use the
  1135. %    information provided. The definitions of these macros are shown
  1136. %    here for information.
  1137. %    \begin{macrocode}
  1138. % \newcommand\title[1]{\gdef\@title{#1}}
  1139. % \newcommand\author[1]{\gdef\@author{#1}}
  1140. % \newcommand\date[1]{\gdef\@date{#1}}
  1141. %    \end{macrocode}
  1142. %    The |\date| macro gets today's date by default.
  1143. %    \begin{macrocode}
  1144. % \gdef\@date{\today}
  1145. %    \end{macrocode}
  1146. % \end{macro}
  1147. % \end{macro}
  1148. % \end{macro}
  1149. % \begin{macro}{\maketitle}
  1150. %    The definition of |\maketitle| depends on whether a seperate
  1151. %    title page is made. This is the default for the refman
  1152. %    document class, but for the refart class it is optional.
  1153. %    When we are making a title page, we locally redefine
  1154. %    |\footnotesize| and |footnoterule| to change the appearance of
  1155. %    the footnotes that are produced by the |\thanks| command.
  1156. %    \begin{macrocode}
  1157. \if@titlepage
  1158.   \newcommand\maketitle{\begin{titlepage}%
  1159.   \let\footnotesize\small
  1160.   \let\footnoterule\relax
  1161. %    \end{macrocode}
  1162. %    We center the entire title vertically; the centering is set off a
  1163. %    little by adding a |\vskip|. In compatibility mode the pagenumber
  1164. %    is set to 0 to keep the behaviour of \LaTeX\ 2.09 style files
  1165. %    \begin{macrocode}
  1166.   \null\vfil
  1167.   \vskip 60\p@
  1168. %    \end{macrocode}
  1169. %    Then we set the title, in a |\LARGE| font; leave a little space
  1170. %    and set the author(s) in a |\large| font. We do this inside a
  1171. %    tabular environment to get them in a single column.
  1172. %    Before the date we leave a little whitespace again.
  1173. %    \begin{macrocode}
  1174.   \begin{center}%
  1175.     {\LARGE \@title \par}%
  1176.     \vskip 3em%
  1177.     {\large
  1178.      \lineskip .75em%
  1179.       \begin{tabular}[t]{c}%
  1180.         \@author
  1181.       \end{tabular}\par}%
  1182.       \vskip 1.5em%
  1183.     {\large \@date \par}%       % Set date in \large size.
  1184.   \end{center}\par
  1185. %    \end{macrocode}
  1186. %    Then we call |\@thanks| to print the information that goes into
  1187. %    the footnote and finish the page.
  1188. %    \begin{macrocode}
  1189.   \@thanks
  1190.   \vfil\null
  1191.   \end{titlepage}%
  1192. %    \end{macrocode}
  1193. %    We reset the \Lcount{footnote} counter, disable |\thanks| and
  1194. %    |\maketitle| and save some storage space by emptying the internal
  1195. %    information macros.
  1196. %    \begin{macrocode}
  1197.   \setcounter{footnote}{0}%
  1198.   \let\thanks\relax\let\maketitle\relax
  1199.   \gdef\@thanks{}\gdef\@author{}\gdef\@title{}}
  1200. %    \end{macrocode}
  1201. %    When the title is not on a page of its own, the layout of the
  1202. %    title is a little different. We use symbols to mark the footnotes
  1203. %    and we have to deal with two column documents.
  1204. %    Therefore we first start a new group to keep changes local. Then
  1205. %    we redefine |\thefootnote| to use |\fnsymbol|; and change
  1206. %    |\@makefnmark| so that footnotemarks have zero width (to make the
  1207. %    centering of the author names look better).
  1208. %    \begin{macrocode}
  1209. \else
  1210.   \newcommand\maketitle{\par
  1211.     \begingroup
  1212.       \renewcommand\thefootnote{\fnsymbol{footnote}}%
  1213.       \def\@makefnmark{\hbox to\z@{$\m@th^{\@thefnmark}$\hss}}%
  1214.       \long\def\@makefntext##1{\parindent 1em\noindent
  1215.             \hbox to1.8em{\hss$\m@th^{\@thefnmark}$}##1}%
  1216. %    \end{macrocode}
  1217. %    If this is a twocolumn document we start a new page in twocolumn
  1218. %    mode, with the title set to the full width of the text. The
  1219. %    actual printing of the title information is left to
  1220. %    |\@maketitle|.
  1221. %    \begin{macrocode}
  1222.       \if@twocolumn
  1223.         \ifnum \col@number=\@ne
  1224.           \@maketitle
  1225.         \else
  1226.           \twocolumn[\@maketitle]%
  1227.         \fi
  1228.       \else
  1229. %    \end{macrocode}
  1230. %    When this is not a twocolumn document we just start a new page,
  1231. %    prevent floating objects from appearing on the top of this page
  1232. %    and print the title information.
  1233. %    \begin{macrocode}
  1234.         \newpage
  1235.         \global\@topnum\z@   % Prevents figures from going at top of page.
  1236.         \@maketitle
  1237.       \fi
  1238. %    \end{macrocode}
  1239. %    This page gets a \pstyle{plain} layout. We call |\@thanks| to
  1240. %    produce the footnotes.
  1241. %    \begin{macrocode}
  1242.       \thispagestyle{plain}\@thanks
  1243. %    \end{macrocode}
  1244. %    Now we can close the group, reset the \Lcount{footnote} counter,
  1245. %    disable |\thanks|, |\maketitle| and |\@maketitle| and save some
  1246. %    storage space by emptying the internal information macros.
  1247. %    \begin{macrocode}
  1248.     \endgroup
  1249.     \setcounter{footnote}{0}%
  1250.     \let\thanks\relax
  1251.     \let\maketitle\relax\let\@maketitle\relax
  1252.     \gdef\@thanks{}\gdef\@author{}\gdef\@title{}}
  1253. %    \end{macrocode}
  1254. % \end{macro}
  1255. % \begin{macro}{\@maketitle}
  1256. %    This macro takes care of formatting the title information when we
  1257. %    have no seperate title page.
  1258. %    We always start a new page and put the title flushleft
  1259. %    using a |\Large| bold font with
  1260. %    thick rules above and below. Then we put the autor information
  1261. %    flushright in slanted type. This title will allways show the
  1262. %    date unless it is set to nothing, using the |\date{}| command.
  1263. %    \begin{macrocode}
  1264.   \def\@maketitle{%
  1265.     \newpage
  1266.     \null
  1267.     %\vskip 2em%
  1268.     \longthickrule\vskip1.5em%
  1269.     {\secshape \parskip\z@ \parindent\z@
  1270.     \Large\bfseries \@title \par}%
  1271.     \vskip1.5em\longthickrule\vskip1.5em%
  1272.     {\normalsize
  1273.       \lineskip .5em%
  1274.       \begin{flushright}%
  1275.         {\slshape\@author\par}
  1276.         \vskip 1em%
  1277.         {\@date}%
  1278.       \end{flushright}\par}%
  1279.     \vskip 1.5em}
  1280. %    \end{macrocode}
  1281. % \end{macro}
  1282. % \subsection{Chapters and Sections}
  1283. % \subsubsection{Building blocks}
  1284. %    The definitions in this part of the class file make use of two
  1285. %    macros, |\@startsection| and |\secdef|, which are defined by
  1286. %    \file{latex.dtx}. They are not described here, see the
  1287. %    \file{classes.dtx} for more information.
  1288. % \subsubsection{Mark commands}
  1289. % \begin{macro}{\chaptermark}
  1290. % \begin{macro}{\sectionmark}
  1291. % \begin{macro}{\subsectionmark}
  1292. % \begin{macro}{\subsubsectionmark}
  1293. % \begin{macro}{\paragraphmark}
  1294. % \begin{macro}{\subparagraphmark}
  1295. %    Default initializations of |\...mark| commands.  These commands
  1296. %    are used in the definition of the page styles (see
  1297. %    section~\ref{sec:pagestyle}) Most of them are already defined by
  1298. %    \file{latex.dtx}, so they are only shown here.
  1299. %    \begin{macrocode}
  1300. %<+refrep>\newcommand\chaptermark[1]{}
  1301. % \newcommand\sectionmark[1]{}
  1302. % \newcommand\subsectionmark[1]{}
  1303. % \newcommand\subsubsectionmark[1]{}
  1304. % \newcommand\paragraphmark[1]{}
  1305. % \newcommand\subparagraphmark[1]{}
  1306. %    \end{macrocode}
  1307. % \end{macro}
  1308. % \end{macro}
  1309. % \end{macro}
  1310. % \end{macro}
  1311. % \end{macro}
  1312. % \end{macro}
  1313. % \subsubsection{Define Counters}
  1314. % \begin{macro}{\c@secnumdepth}
  1315. %    The value of the counter \Lcount{secnumdepth} gives the depth of
  1316. %    the highest-level sectioning command that is to produce section
  1317. %    numbers.
  1318. %    \begin{macrocode}
  1319. %<+refart>\setcounter{secnumdepth}{3}
  1320. %<+refrep>\setcounter{secnumdepth}{2}
  1321. %    \end{macrocode}
  1322. % \end{macro}
  1323. % \begin{macro}{\c@part}
  1324. % \begin{macro}{\c@chapter}
  1325. % \begin{macro}{\c@section}
  1326. % \begin{macro}{\c@subsection}
  1327. % \begin{macro}{\c@subsubsection}
  1328. % \begin{macro}{\c@paragraph}
  1329. % \begin{macro}{\c@subparagraph}
  1330. %    These counters are used for the section numbers. The macro
  1331. %    |\newcounter{|\meta{newctr}|}[|\meta{oldctr}|]| defines
  1332. %    \meta{newctr} to be a counter, which is reset to zero when
  1333. %    counter \meta{oldctr} is stepped. Counter \meta{oldctr} must
  1334. %    already be defined.
  1335. %    \begin{macrocode}
  1336. \newcounter {part}
  1337. %<+refart>\newcounter {section}
  1338. %<*refrep>
  1339. \newcounter {chapter}
  1340. \newcounter {section}[chapter]
  1341. %</refrep>
  1342. \newcounter {subsection}[section]
  1343. \newcounter {subsubsection}[subsection]
  1344. \newcounter {paragraph}[subsubsection]
  1345. \newcounter {subparagraph}[paragraph]
  1346. %    \end{macrocode}
  1347. % \end{macro}
  1348. % \end{macro}
  1349. % \end{macro}
  1350. % \end{macro}
  1351. % \end{macro}
  1352. % \end{macro}
  1353. % \end{macro}
  1354. % \begin{macro}{\thepart}
  1355. % \begin{macro}{\thechapter}
  1356. % \begin{macro}{\thesection}
  1357. % \begin{macro}{\thesubsection}
  1358. % \begin{macro}{\thesubsubsection}
  1359. % \begin{macro}{\theparagraph}
  1360. % \begin{macro}{\thesubparagraph}
  1361. %    For any counter \Lcount{CTR}, |\theCTR| is a macro that defines
  1362. %    the printed version of counter \Lcount{CTR}.  It is defined in
  1363. %    terms of the following macros:
  1364. %    |\arabic{|\Lcount{COUNTER}|}| prints the value of
  1365. %    \Lcount{COUNTER} as an arabic numeral.
  1366. %    |\roman{|\Lcount{COUNTER}|}| prints the value of
  1367. %    \Lcount{COUNTER} as a lowercase roman numberal.
  1368. %    |\Roman{|\Lcount{COUNTER}|}| prints the value of
  1369. %    \Lcount{COUNTER} as an uppercase roman numberal.
  1370. %    |\alph{|\Lcount{COUNTER}|}| prints the value of \Lcount{COUNTER}
  1371. %    as a lowercase letter: $1 =$~a, $2 =$~ b, etc.
  1372. %    |\Alph{|\Lcount{COUNTER}|}| prints the value of \Lcount{COUNTER}
  1373. %    as an uppercase letter: $1 =$~A, $2 =$~B, etc.
  1374. %    \begin{macrocode}
  1375. \renewcommand\thepart          {\Roman{part}}
  1376. %<+refart>\renewcommand\thesection       {\arabic{section}}
  1377. %<*refrep>
  1378. \renewcommand\thechapter       {\arabic{chapter}}
  1379. \renewcommand\thesection       {\thechapter.\arabic{section}}
  1380. %</refrep>
  1381. \renewcommand\thesubsection    {\thesection.\arabic{subsection}}
  1382. \renewcommand\thesubsubsection {\thesubsection .\arabic{subsubsection}}
  1383. \renewcommand\theparagraph     {\thesubsubsection.\arabic{paragraph}}
  1384. \renewcommand\thesubparagraph  {\theparagraph.\arabic{subparagraph}}
  1385. %    \end{macrocode}
  1386. % \end{macro}
  1387. % \end{macro}
  1388. % \end{macro}
  1389. % \end{macro}
  1390. % \end{macro}
  1391. % \end{macro}
  1392. % \end{macro}
  1393. % \begin{macro}{\@chapapp}
  1394. %    |\@chapapp| is initially defined to be empty. The
  1395. %    |\appendix| command redefines it to be `|\appendixname|'.
  1396. %    \begin{macrocode}
  1397. %<+refrep>\newcommand\@chapapp{}
  1398. %    \end{macrocode}
  1399. % \end{macro}
  1400. % \subsubsection{Parts}
  1401. % \begin{macro}{\part}
  1402. %    The command to start a new part of our document.
  1403. %    In the refart class the definition of |\part| is rather simple;
  1404. %    we start a new paragraph, add a little white space, suppress the
  1405. %    indentation of the first paragraph and make use of |\@secdef|.
  1406. %    \begin{macrocode}
  1407. %<*refart>
  1408. \newcommand\part{\par
  1409.    \addvspace{4ex}%
  1410.    \@afterindentfalse
  1411.    \secdef\@part\@spart}
  1412. %</refart>
  1413. %    \end{macrocode}
  1414. %    For the refrep class things are a bit different.
  1415. %    We start a new (righthand) page and use the \pstyle{plain}.
  1416. %    \begin{macrocode}
  1417. %<*refrep>
  1418. \newcommand\part{\cleardoublepage
  1419.                  \thispagestyle{plain}%
  1420. %    \end{macrocode}
  1421. %    When we are making a two column document, this will be a one
  1422. %    column page. We use |@tempswa| to remember to switch back to two
  1423. %    columns.
  1424. %    \begin{macrocode}
  1425.                  \if@twocolumn
  1426.                    \onecolumn
  1427.                    \@tempswatrue
  1428.                  \else
  1429.                    \@tempswafalse
  1430.                  \fi
  1431. %    \end{macrocode}
  1432. %    We need an empty box to prevent the fil glue from disappearing.
  1433. %    \begin{macrocode}
  1434.                  \hbox{}\vfil
  1435. %    \end{macrocode}
  1436. %    Here we use |\secdef| to indicate which commands to use to make
  1437. %    the actual heading.
  1438. %    \begin{macrocode}
  1439.                  \secdef\@part\@spart}
  1440. %</refrep>
  1441. %    \end{macrocode}
  1442. % \end{macro}
  1443. % \begin{macro}{\@part}
  1444. %    This macro does the actual formatting of the title of the part.
  1445. %    Again the macro is differently defined for the refart document
  1446. %    class than for the document class refrep.
  1447. %    When \Lcount{secnumdepth} is larger than $-1$ for the
  1448. %    document class refart or $-2$ for the document class refrep,
  1449. %    we have a numbered part, otherwise it is unnumbered.
  1450. %    \begin{macrocode}
  1451. %<*refart|refrep>
  1452. \def\@part[#1]#2{%
  1453. %<+refart>    \ifnum \c@secnumdepth >\m@ne
  1454. %<+refrep>    \ifnum \c@secnumdepth >-2\relax
  1455.       \refstepcounter{part}%
  1456.       \addcontentsline{toc}{part}{\thepart\hspace{1em}#1}%
  1457.     \else
  1458.       \addcontentsline{toc}{part}{#1}%
  1459.     \fi
  1460. %    \end{macrocode}
  1461. %    We  print the title flush left, we also
  1462. %    prevent breaking between lines and reset the font.
  1463. %    \begin{macrocode}
  1464.      \longrule\medskip
  1465.     {\parindent \z@ \raggedright
  1466.      \interlinepenalty \@M
  1467.      \reset@font
  1468. %    \end{macrocode}
  1469. %    When this is a numbered part we have to print the number and the
  1470. %    title. The |\nobreak| should prevent a page break here.
  1471. %    \begin{macrocode}
  1472.      \Large
  1473. %<+refart>     \ifnum \c@secnumdepth >\m@ne
  1474. %<+refrep>     \ifnum \c@secnumdepth >-2 \relax
  1475.      \thepart.\quad
  1476.      \fi
  1477.      #2\par \medskip
  1478.      \longrule\bigskip%
  1479. %    \end{macrocode}
  1480. %    Then we empty the mark registers, leave some white space and call
  1481. %    |\@afterheading| to  takes care of suppressing the indentation.
  1482. %    \begin{macrocode}
  1483.      \markboth{}{}\par}%
  1484.     \nobreak
  1485.     \vskip 3ex
  1486.     \@afterheading}
  1487. %</refart|refrep>
  1488. %    \end{macrocode}
  1489. % \end{macro}
  1490. % \begin{macro}{\@spart}
  1491. %    This macro does the actual formatting of the title of the part
  1492. %    when the star form of the user command was used. In this case we
  1493. %    {\em never} print a number. Otherwise the formatting is the same.
  1494. %    \begin{macrocode}
  1495. %<*refart|refrep>
  1496. \def\@spart#1{%
  1497.     \longrule\medskip
  1498.     {\parindent \z@ \raggedright
  1499.      \interlinepenalty \@M
  1500.      \reset@font
  1501.      \Large #1\par}%
  1502.     \medskip\longrule
  1503.      \nobreak
  1504.      \vskip 3ex
  1505.      \@afterheading}
  1506. %</refart|refrep>
  1507. %    \end{macrocode}
  1508. % \end{macro}
  1509. % \subsubsection{Chapters}
  1510. % \begin{macro}{\chapter}
  1511. %    A chapter should always start on a new page therefore we start by
  1512. %    calling |\clearpage| and setting the pagestyle for this page to
  1513. %    \pstyle{plain}.
  1514. %    \begin{macrocode}
  1515. %<*refrep>
  1516. \newcommand\chapter{\if@openright\cleardoublepage\else\clearpage\fi
  1517.                            \if@pageperchapter\setcounter{page}{1}\fi
  1518.                     \thispagestyle{plain}%
  1519. %    \end{macrocode}
  1520. %    Then we prevent floats from appearing at the top of this page
  1521. %    because it looks weird to see a floating object above a chapter
  1522. %    title.
  1523. %    \begin{macrocode}
  1524.                     \global\@topnum\z@
  1525. %    \end{macrocode}
  1526. %    Then we suppress the indentation of the first paragraph by
  1527. %    setting the switch |\@afterindent| to |false|. We use |\secdef|
  1528. %    to specify the macros to use for actually setting the chapter
  1529. %    title.
  1530. %    \begin{macrocode}
  1531.                     \@afterindentfalse
  1532.                     \secdef\@chapter\@schapter}
  1533. %    \end{macrocode}
  1534. %    \end{macro}
  1535. % \begin{macro}{\@chapter}
  1536. %    This macro is called when we have a numbered chapter. When
  1537. %    \Lcount{secnumdepth} is larger than $-1$ we display the chapter
  1538. %    number. We also inform the user that a new chapter is about to be
  1539. %    typeset by writing a message to the terminal.
  1540. %    \begin{macrocode}
  1541. \def\@chapter[#1]#2{\ifnum \c@secnumdepth >\m@ne
  1542.                       \refstepcounter{chapter}%
  1543.                       \typeout{\@chapapp\space\thechapter.}%
  1544.                       \addcontentsline{toc}{chapter}%
  1545.                                    {\protect\numberline{\thechapter}#1}%
  1546.                     \else
  1547.                       \addcontentsline{toc}{chapter}{#1}
  1548.                     \fi
  1549. %    \end{macrocode}
  1550. %    After having written an entry to the table of contents we store
  1551. %    the (alternative) title of this chapter with |\chaptermark| and
  1552. %    add some white space to the lists of figures and tables.
  1553. %    \begin{macrocode}
  1554.                     \chaptermark{#1}%
  1555.                     \addtocontents{lof}{\protect\addvspace{10\p@}}%
  1556.                     \addtocontents{lot}{\protect\addvspace{10\p@}}%
  1557. %    \end{macrocode}
  1558. %    Then we call upon |\@makechapterhead| to format the actual
  1559. %    chapter title. We have to do this in a special way when we are in
  1560. %    twocolumn mode in order to have the chapter title use the entire
  1561. %    |\textwidth|. In one column mode we call |\@afterheading| which
  1562. %    takes care of suppressing the indentation.
  1563. %    \begin{macrocode}
  1564.                     \if@twocolumn
  1565.                       \@topnewpage[\@makechapterhead{#2}]%
  1566.                     \else
  1567.                       \@makechapterhead{#2}%
  1568.                       \@afterheading
  1569.                     \fi}
  1570. %    \end{macrocode}
  1571. %    \end{macro}
  1572. % \begin{macro}{\@makechapterhead}
  1573. %    The macro above uses |\@makechapterhead|\meta{text} to format the
  1574. %    heading of the chapter.
  1575. %    We begin by leaving some white space. The we open a group in
  1576. %    which we have a paragraph indent of 0pt, and in which we have the
  1577. %    text set ragged right. We also reset the font.
  1578. %    \begin{macrocode}
  1579. \def\@makechapterhead#1{%
  1580.   \longthickrule\bigskip%
  1581.   {\parindent \z@ \secshape \reset@font \Large\bfseries
  1582. %    \end{macrocode}
  1583. %    Then we check whether the number of the chapter has to be printed.
  1584. %    If so we leave some whitespace between the chapternumber and its
  1585. %    title.
  1586. %    \begin{macrocode}
  1587.   \ifnum \c@secnumdepth >\m@ne
  1588.      \@chapapp{} \thechapter.\quad
  1589.   \fi
  1590. %    \end{macrocode}
  1591. %    Now we set the title in a large bold font. We prevent a pagebreak
  1592. %    at this point and leave some whitespace before the text begins.
  1593. %    \begin{macrocode}
  1594.   #1\par}
  1595.   \bigskip\longthickrule\bigskip
  1596. %    \end{macrocode}
  1597. % \end{macro}
  1598. % \begin{macro}{\@schapter}
  1599. %    This macro is called when we have an unnumbered chapter. It is
  1600. %    much simpler than |\@chapter| because it only needs to typeset
  1601. %    the chapter title.
  1602. %    \begin{macrocode}
  1603. \def\@schapter#1{\if@twocolumn
  1604.                    \@topnewpage[\@makeschapterhead{#1}]%
  1605.                  \else
  1606.                    \@makeschapterhead{#1}%
  1607.                    \@afterheading
  1608.                  \fi}
  1609. %    \end{macrocode}
  1610. %   \end{macro}
  1611. % \begin{macro}{\@makeschapterhead}
  1612. %    The macro above uses |\@makeschapterhead|\meta{text}to format
  1613. %    the heading of the chapter. It is similar to |\@makechapterhead|
  1614. %    except that it never has to print a chapter number.
  1615. %    \begin{macrocode}
  1616. \def\@makeschapterhead#1{%
  1617.     \longthickrule\bigskip%
  1618.     {\parindent \z@ \secshape \reset@font
  1619.     \Large \bfseries  #1\par}
  1620.     \bigskip\longthickrule\bigskip
  1621.     }
  1622. %</refrep>
  1623. %    \end{macrocode}
  1624. % \end{macro}
  1625. % \subsubsection{Lower level headings}
  1626. % \begin{macro}{\secshape}
  1627. %    \begin{macrocode}
  1628. \newcommand\secshape{\leftskip=-\leftmarginwidth%
  1629.                      \rightskip=\@flushglue%
  1630.                      \hyphenpenalty=2000}
  1631. %    \end{macrocode}
  1632. %  \end{macro}
  1633. %    These commands all make use of |\@startsection|.
  1634. % \begin{macro}{\section}
  1635. %    This gives a normal heading with white space above and below the
  1636. %    heading, the title set in |\large\bfseries|, and no indentation
  1637. %    on the first paragraph.
  1638. %    \begin{macrocode}
  1639. \newcommand\section{\@startsection {section}{1}{\z@}%
  1640.                                    {-2ex \@plus -1ex \@minus -.2ex}%
  1641.                                    {0.5ex \@plus .2ex}%
  1642.                                    {\secshape\reset@font\large\bfseries}}
  1643. %    \end{macrocode}
  1644. % \end{macro}
  1645. % \begin{macro}{\subsection}
  1646. %    This gives a normal heading with white space above and below the
  1647. %    heading, the title set in |\large\bfseries|, and no indentation
  1648. %    on the first paragraph.
  1649. %    \begin{macrocode}
  1650. \newcommand\subsection{\@startsection{subsection}{2}{\z@}%
  1651.                                      {-1.5ex\@plus -.5ex \@minus -.2ex}%
  1652.                                      {0.5ex \@plus .2ex}%
  1653.                                      {\secshape\reset@font\normalsize\bfseries}}
  1654. %    \end{macrocode}
  1655. % \end{macro}
  1656. % \begin{macro}{\subsubsection}
  1657. %    This gives a normal heading with white space above and below the
  1658. %    heading, the title set in |\normalsize\bfseries|, and no
  1659. %    indentation on the first paragraph.
  1660. %    \begin{macrocode}
  1661. \newcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}%
  1662.                                      {-1.5ex\@plus -.5ex \@minus -.2ex}%
  1663.                                      {0.5ex \@plus .2ex}%
  1664.                                      {\secshape\reset@font\normalsize\mdseries}}
  1665. %    \end{macrocode}
  1666. % \end{macro}
  1667. % \begin{macro}{\paragraph}
  1668. %    This gives a run-in heading with white space above and to the
  1669. %    right of the heading, the title set in |\normalsize\bfseries|.
  1670. %    \begin{macrocode}
  1671. \newcommand\paragraph{\@startsection{paragraph}{4}{\z@}%
  1672.                                     {2ex\@plus 1ex \@minus .2ex}%
  1673.                                     {-1em}%
  1674.                                     {\reset@font\normalsize\bfseries}}
  1675. %    \end{macrocode}
  1676. % \end{macro}
  1677. % \begin{macro}{\subparagraph}
  1678. %    This gives an indented run-in heading with white space above and
  1679. %    to the right of the heading, the title set in
  1680. %    |\normalsize\bfseries|.
  1681. %    \begin{macrocode}
  1682. \newcommand\subparagraph{\@startsection{subparagraph}{5}{\parindent}%
  1683.                                        {2ex \@plus 1ex \@minus .2ex}%
  1684.                                        {-1em}%
  1685.                                        {\reset@font\normalsize\bfseries}}
  1686. %    \end{macrocode}
  1687. % \end{macro}
  1688. % \subsection{Lists}
  1689. % \subsubsection{General List Parameters}
  1690. % The following commands are used to set the default values for the list
  1691. % environment's parameters. See the \LaTeX{} manual for an explanation
  1692. % of the meanings of the parameters.  Defaults for the list
  1693. % environment are set as follows.  First, |\rightmargin|,
  1694. % |\listparindent| and |\itemindent| are set to 0pt.  Then, for a Kth
  1695. % level list, the command |\@listK| is called, where `K' denotes `i',
  1696. % '`i', ... , `vi'.  (I.e., |\@listiii| is called for a third-level
  1697. % list.)  By convention, |\@listK| should set |\leftmargin| to
  1698. % |\leftmarginK|.
  1699. % \begin{macro}{\leftmargin}
  1700. % \begin{macro}{\leftmargini}
  1701. % \begin{macro}{\leftmarginii}
  1702. % \begin{macro}{\leftmarginiii}
  1703. % \begin{macro}{\leftmarginiv}
  1704. % \begin{macro}{\leftmarginv}
  1705. % \begin{macro}{\leftmarginvi}
  1706. % For efficiency, level-one list's values are defined at top level, and
  1707. % |\@listi| is defined to set only |\leftmargin|.
  1708. % When we are in two column mode some of the margins are set somewhat
  1709. % smaller.
  1710. %    \begin{macrocode}
  1711. \if@twocolumn
  1712.   \setlength\leftmargini  {2em}
  1713. \else
  1714.   \setlength\leftmargini  {2.5em}
  1715. %    \end{macrocode}
  1716. %    The following three are calculated so  that they are larger than
  1717. %    the sum of |\labelsep| and the width of the default labels (which
  1718. %    are `(m)', `vii.' and `M.').
  1719. %    \begin{macrocode}
  1720. \setlength\leftmarginii  {2.2em}
  1721. \setlength\leftmarginiii {1.87em}
  1722. \setlength\leftmarginiv  {1.7em}
  1723. \if@twocolumn
  1724.   \setlength\leftmarginv  {.5em}
  1725.   \setlength\leftmarginvi {.5em}
  1726. \else
  1727.   \setlength\leftmarginv  {1em}
  1728.   \setlength\leftmarginvi {1em}
  1729. %    \end{macrocode}
  1730. %    Here we set the top level leftmargin.
  1731. %    \begin{macrocode}
  1732. \setlength\leftmargin    {\leftmargini}
  1733. %    \end{macrocode}
  1734. % \end{macro}
  1735. % \end{macro}
  1736. % \end{macro}
  1737. % \end{macro}
  1738. % \end{macro}
  1739. % \end{macro}
  1740. % \end{macro}
  1741. % \begin{macro}{\labelsep}
  1742. % \begin{macro}{\labelwidth}
  1743. %    |\labelsep| is the distance between the label and the text of an
  1744. %    item; |\labelwidth| is the width of the label.
  1745. %    \begin{macrocode}
  1746. \setlength  \labelsep  {.5em}
  1747. \setlength  \labelwidth{\leftmargini}
  1748. \addtolength\labelwidth{-\labelsep}
  1749. %    \end{macrocode}
  1750. % \end{macro}
  1751. % \end{macro}
  1752. % \begin{macro}{\@beginparpenalty}
  1753. % \begin{macro}{\@endparpenalty}
  1754. %    These penalties are inserted before and after a list or paragraph
  1755. %    environment. They are set to a bonus value to encourage page
  1756. %    breaking at these points.
  1757. % \begin{macro}{\@itempenalty}
  1758. %    This penalty is inserted between list items.
  1759. %    \begin{macrocode}
  1760. %<*refart|refrep>
  1761. \@beginparpenalty -\@lowpenalty
  1762. \@endparpenalty   -\@lowpenalty
  1763. \@itempenalty     -\@lowpenalty
  1764. %</refart|refrep>
  1765. %    \end{macrocode}
  1766. % \end{macro}
  1767. % \end{macro}
  1768. % \end{macro}
  1769. % \begin{macro}{\@listI}
  1770. % \begin{macro}{\@listi}
  1771. % |\@listI| defines top level and |\@listi| values of
  1772. % |\leftmargin|, |\parsep|, |\topsep|, and |\itemsep|
  1773. %    \begin{macrocode}
  1774. %<*refart|refrep>
  1775. \def\@listI{\leftmargin\leftmargini
  1776.             \parsep \parskip
  1777.             \topsep \z@
  1778.             \itemsep\z@}
  1779. \let\@listi\@listI
  1780. %    \end{macrocode}
  1781. %    We have to initialise these parameters.
  1782. %    \begin{macrocode}
  1783. \@listi
  1784. %    \end{macrocode}
  1785. % \end{macro}
  1786. % \end{macro}
  1787. % \begin{macro}{\@listii}
  1788. % \begin{macro}{\@listiii}
  1789. % \begin{macro}{\@listiv}
  1790. % \begin{macro}{\@listv}
  1791. % \begin{macro}{\@listvi}
  1792. %    Here are the same macros for the higher level lists.
  1793. %    \begin{macrocode}
  1794. \def\@listii {\leftmargin\leftmarginii
  1795.               \labelwidth\leftmarginii
  1796.               \advance\labelwidth-\labelsep
  1797.               \topsep    \z@
  1798.               \parsep    \parskip
  1799.               \itemsep   \z@}
  1800. \def\@listiii{\leftmargin\leftmarginiii
  1801.               \labelwidth\leftmarginiii
  1802.               \advance\labelwidth-\labelsep
  1803.               \topsep    \z@
  1804.               \parsep    \parskip
  1805.               \partopsep \z@
  1806.               \itemsep   \topsep}
  1807. \def\@listiv {\leftmargin\leftmarginiv
  1808.               \labelwidth\leftmarginiv
  1809.               \advance\labelwidth-\labelsep}
  1810. \def\@listv  {\leftmargin\leftmarginv
  1811.               \labelwidth\leftmarginv
  1812.               \advance\labelwidth-\labelsep}
  1813. \def\@listvi {\leftmargin\leftmarginvi
  1814.               \labelwidth\leftmarginvi
  1815.               \advance\labelwidth-\labelsep}
  1816. %<*refart|refrep>
  1817. %    \end{macrocode}
  1818. % \end{macro}
  1819. % \end{macro}
  1820. % \end{macro}
  1821. % \end{macro}
  1822. % \end{macro}
  1823. % \subsubsection{Enumerate}
  1824. %    The enumerate environment uses  four counters: \Lcount{enumi},
  1825. %    \Lcount{enumii}, \Lcount{enumiii} and \Lcount{enumiv}, where
  1826. %    \Lcount{enumN} controls the numbering of the Nth level
  1827. %    enumeration.
  1828. % \begin{macro}{\theenumi}
  1829. % \begin{macro}{\theenumii}
  1830. % \begin{macro}{\theenumiii}
  1831. % \begin{macro}{\theenumiv}
  1832. %    The counters are already defined in \file{latex.dtx}, but their
  1833. %    representation is changed here.
  1834. %    \begin{macrocode}
  1835. %<*refart|refrep>
  1836. \renewcommand\theenumi{\arabic{enumi}}
  1837. \renewcommand\theenumii{\alph{enumii}}
  1838. \renewcommand\theenumiii{\roman{enumiii}}
  1839. \renewcommand\theenumiv{\Alph{enumiv}}
  1840. %    \end{macrocode}
  1841. % \end{macro}
  1842. % \end{macro}
  1843. % \end{macro}
  1844. % \end{macro}
  1845. % \begin{macro}{\labelenumi}
  1846. % \begin{macro}{\labelenumii}
  1847. % \begin{macro}{\labelenumiii}
  1848. % \begin{macro}{\labelenumiv}
  1849. %    The label for each item is generated by the commands
  1850. %    |\labelenumi| ... |\labelenumiv|.
  1851. %    \begin{macrocode}
  1852. \newcommand\labelenumi{\theenumi.}
  1853. \newcommand\labelenumii{(\theenumii)}
  1854. \newcommand\labelenumiii{\theenumiii.}
  1855. \newcommand\labelenumiv{\theenumiv.}
  1856. %    \end{macrocode}
  1857. % \end{macro}
  1858. % \end{macro}
  1859. % \end{macro}
  1860. % \end{macro}
  1861. % \begin{macro}{\p@enumii}
  1862. % \begin{macro}{\p@enumiii}
  1863. % \begin{macro}{\p@enumiv}
  1864. %    The expansion of |\p@enumN||\theenumN| defines the output of a
  1865. %    |\ref| command when referencing an item of the Nth level of an
  1866. %    enumerated list.
  1867. %    \begin{macrocode}
  1868. \renewcommand\p@enumii{\theenumi}
  1869. \renewcommand\p@enumiii{\theenumi(\theenumii)}
  1870. \renewcommand\p@enumiv{\p@enumiii\theenumiii}
  1871. %    \end{macrocode}
  1872. % \end{macro}
  1873. % \end{macro}
  1874. % \end{macro}
  1875. % \subsubsection{Itemize}
  1876. % \begin{macro}{\labelitemi}
  1877. % \begin{macro}{\labelitemii}
  1878. % \begin{macro}{\labelitemiii}
  1879. % \begin{macro}{\labelitemiv}
  1880. % Itemization is controlled by four commands: |\labelitemi|,
  1881. % |\labelitemii|, |\labelitemiii|, and |\labelitemiv|, which define
  1882. % the labels of thevarious itemization levels: the symbols used are
  1883. % bullet, bold en-dash, asterisk and centred dot.
  1884. %    \begin{macrocode}
  1885. \newcommand\labelitemi{$\m@th\bullet$}
  1886. \newcommand\labelitemii{\normalfont\bfseries --}
  1887. \newcommand\labelitemiii{$\m@th\ast$}
  1888. \newcommand\labelitemiv{$\m@th\cdot$}
  1889. %    \end{macrocode}
  1890. % \end{macro}
  1891. % \end{macro}
  1892. % \end{macro}
  1893. % \end{macro}
  1894. % \subsubsection{Description}
  1895. % \begin{macro}{\description}
  1896. % \begin{macro}{\descriptionlabel}
  1897. %    The description environment is defined here -- while the itemize
  1898. %    and enumerate environments are defined in \file{latex.dtx}.
  1899. %    To change the formatting of the label, you must redefine
  1900. %    |\descriptionlabel|.
  1901. %    \begin{macrocode}
  1902. \newcommand\descriptionlabel[1]{%
  1903.             \ifdescriptionleft\else \hfil\fi
  1904.             \normalfont #1 \ifdescriptioncolon :\fi
  1905.             \ifdescriptionleft \hfil \fi}
  1906. \newenvironment{description}
  1907.                {\list{}{%
  1908.                     \labelsep\marginparsep
  1909.                     \labelwidth\leftmarginwidth
  1910.                     %\advance\labelwidth by \@totalleftmargin
  1911.                     \advance\labelwidth by \leftmargin
  1912.                     \advance\labelwidth by -\labelsep
  1913.                     \let\makelabel\descriptionlabel}}
  1914.                {\endlist}
  1915. %    \end{macrocode}
  1916. % \end{macro}
  1917. % \end{macro}
  1918. % \subsection{Defining new environments}
  1919. % \subsubsection{Abstract}
  1920. % \begin{macro}{\abstract}
  1921. %    When we are producing a separate titlepage we also put the
  1922. %    abstract on a page of its own. It will be centred vertically on
  1923. %    the page.
  1924. %    \begin{macrocode}
  1925. \if@titlepage
  1926.   \newenvironment{abstract}{%
  1927.       \titlepage
  1928.       \null\vfil
  1929.       \begin{center}
  1930.         \bfseries \abstractname
  1931.       \end{center}}
  1932.      {\par\vfil\null\endtitlepage}
  1933. %    \end{macrocode}
  1934. %    When we are not making a seperate titlepage --the default for the
  1935. %    refart document class-- we have to check if we are in twocolumn
  1936. %    mode. In that case the abstract is as a |\section*|, otherwise
  1937. %    the quote environment is used to typeset the abstract.
  1938. %    \begin{macrocode}
  1939. \else
  1940.   \newenvironment{abstract}{%
  1941.       \if@twocolumn
  1942.         \section*{\abstractname}%
  1943.       \else
  1944.         \small
  1945.         \begin{center}%
  1946.           {\bfseries \abstractname\vspace{-.5em}\vspace{\z@}}%
  1947.         \end{center}%
  1948.         \quote
  1949.       \fi}
  1950.       {\if@twocolumn\else\endquote\fi}
  1951. %    \end{macrocode}
  1952. % \end{macro}
  1953. % \subsubsection{Verse}
  1954. % \begin{macro}{\verse}
  1955. %   The verse environment is defined by making clever use of the
  1956. %   list environment's parameters.  The user types |\\| to end a line.
  1957. %   This is implemented by |\let|'ing |\\| equal |\@centercr|.
  1958. %    \begin{macrocode}
  1959. \newenvironment{verse}
  1960.                {\let\\=\@centercr
  1961.                 \list{}{\itemsep      \z@
  1962.                         \itemindent   -1.5em%
  1963.                         \listparindent\itemindent
  1964.                         \rightmargin  \leftmargin
  1965.                         \advance\leftmargin 1.5em}%
  1966.                 \item[]}
  1967.                {\endlist}
  1968. %    \end{macrocode}
  1969. % \end{macro}
  1970. % \subsubsection{Quotation}
  1971. % \begin{macro}{\quotation}
  1972. %   The quotation environment is also defined by making clever use of
  1973. %   the list environment's parameters. The lines in the environment
  1974. %   are set smaller than |\textwidth|. The first line of a paragraph
  1975. %   inside this environment is indented.
  1976. %    \begin{macrocode}
  1977. \newenvironment{quotation}
  1978.                {\list{}{\listparindent 1.5em%
  1979.                         \itemindent    \listparindent
  1980.                         \rightmargin   \leftmargin
  1981.                         \parsep        \z@ \@plus\p@}%
  1982.                 \item[]}
  1983.                {\endlist}
  1984. %    \end{macrocode}
  1985. % \end{macro}
  1986. % \subsubsection{Quote}
  1987. % \begin{macro}{\quote}
  1988. %   The quote environment is like the quotation environment except
  1989. %   that paragraphs are not indented.
  1990. %    \begin{macrocode}
  1991. \newenvironment{quote}
  1992.                {\list{}{\rightmargin\leftmargin}%
  1993.                 \item[]}
  1994.                {\endlist}
  1995. %    \end{macrocode}
  1996. % \end{macro}
  1997. % \subsubsection{Example}
  1998. % \begin{macro}{\example}
  1999. %   The example environment is a verse environment with tt font
  2000. %   which tries to avoid pagebrakes at the |\begin{example}|.
  2001. %    \begin{macrocode}
  2002. \newenvironment{example}
  2003.                {\@beginparpenalty=\highpenalty
  2004.                \let\\=\@centercr
  2005.                 \list{}{\itemsep      \z@
  2006.                         \itemindent   -1.5em%
  2007.                         \listparindent\itemindent
  2008.                         \rightmargin  \leftmargin
  2009.                         \advance\leftmargin 1.5em}%
  2010.                 \ttfamily
  2011.                 \item[]}
  2012.                {\endlist}
  2013. %    \end{macrocode}
  2014. % \end{macro}
  2015. % \subsubsection{Theorem}
  2016. %    This document class does not define it's own theorem environments,
  2017. %    the defaults, supplied by \file{latex.dtx} are available.
  2018. % \subsubsection{Titlepage}
  2019. % \begin{macro}{\titlepage}
  2020. %  In the normal environments, the titlepage environment does nothing
  2021. %  but start and end a page, and inhibit page numbers.  It also resets
  2022. %  the page number to zero.  In two-column style, it still makes a
  2023. %  one-column page.
  2024. %    \begin{macrocode}
  2025. \newenvironment{titlepage}
  2026.                {\if@twocolumn
  2027.                   \@restonecoltrue\onecolumn
  2028.                 \else
  2029.                   \@restonecolfalse\newpage
  2030.                 \fi
  2031.                 \thispagestyle{empty}%
  2032.                 \setcounter{page}{1}}
  2033.                {\if@restonecol\twocolumn \else \newpage \fi
  2034.                \setcounter{page}{1}}
  2035. %    \end{macrocode}
  2036. % \end{macro}
  2037. % \subsubsection{Appendix}
  2038. % \begin{macro}{\appendix}
  2039. %    The |\appendix| command is not really an environment, it is a
  2040. %    macro that makes some changes in the way things are done.
  2041. %    In the article document class the |\appendix| command must do the
  2042. %    following:
  2043. %    \begin{itemize}
  2044. %    \item reset the section and subsection counters to zero,
  2045. %    \item redefine |\thesection| to produce alphabetic appendix
  2046. %        numbers.
  2047. %    \end{itemize}
  2048. %    \begin{macrocode}
  2049. %<*refart>
  2050. \newcommand\appendix{\par
  2051.   \setcounter{section}{0}%
  2052.   \setcounter{subsection}{0}%
  2053.   \renewcommand\thesection{\Alph{section}}}
  2054. %</refart>
  2055. %    \end{macrocode}
  2056. %    In the report and book document classes the |\appendix| command
  2057. %    must do the following:
  2058. %    \begin{itemize}
  2059. %    \item reset the chapter and section counters to zero,
  2060. %    \item set |\@chapapp| to |\appendixname| (for messages),
  2061. %    \item redefine the chapter counter to produce appendix numbers,
  2062. %    \item possibly redefine the |\chapter| command if appendix titles
  2063. %        and headings are to look different from chapter titles and
  2064. %        headings.
  2065. %    \end{itemize}
  2066. %    \begin{macrocode}
  2067. %<*refrep>
  2068. \newcommand\appendix{\par
  2069.   \setcounter{chapter}{0}%
  2070.   \setcounter{section}{0}%
  2071.   \renewcommand\@chapapp{\appendixname}%
  2072.   \renewcommand\thechapter{\Alph{chapter}}}
  2073. %</refrep>
  2074. %    \end{macrocode}
  2075. % \end{macro}
  2076. % \subsection{Setting parameters for existing environments}
  2077. % \subsubsection{Array and tabular}
  2078. % \begin{macro}{\arraycolsep}
  2079. %    The columns in an array environment are separated by
  2080. %    2|\arraycolsep|.
  2081. %    \begin{macrocode}
  2082. \setlength\arraycolsep{5\p@}
  2083. %    \end{macrocode}
  2084. % \end{macro}
  2085. % \begin{macro}{\tabcolsep}
  2086. %    The columns in an tabular environment are separated by
  2087. %    2|\tabcolsep|.
  2088. %    \begin{macrocode}
  2089. \setlength\tabcolsep{6\p@}
  2090. %    \end{macrocode}
  2091. % \end{macro}
  2092. % \begin{macro}{\arrayrulewidth}
  2093. %    The width of rules in the array and tabular environments is given
  2094. %    by |\arrayrulewidth|.
  2095. %    \begin{macrocode}
  2096. \setlength\arrayrulewidth{.4\p@}
  2097. %    \end{macrocode}
  2098. % \end{macro}
  2099. % \begin{macro}{\doublerulesep}
  2100. %    The space between adjacent rules in the array and tabular
  2101. %    environments is given by |\doublerulesep|.
  2102. %    \begin{macrocode}
  2103. \setlength\doublerulesep{2\p@}
  2104. %    \end{macrocode}
  2105. % \end{macro}
  2106. % \subsubsection{Tabbing}
  2107. % \begin{macro}{\tabbingsep}
  2108. %    This controls the space that the |\'| command puts in. (See
  2109. %    \LaTeX{} manual for an explanation.)
  2110. %    \begin{macrocode}
  2111. \setlength\tabbingsep{\labelsep}
  2112. %    \end{macrocode}
  2113. % \end{macro}
  2114. % \subsubsection{Minipage}
  2115. % \begin{macro}{\@minipagerestore}
  2116. %    The macro |\@minipagerestore| is called upon entry to a minipage
  2117. %    environment to set up things that are to be handled differently
  2118. %    inside a minipage environment. In the current styles, it does
  2119. %    nothing.
  2120. % \end{macro}
  2121. % \begin{macro}{\@mpfootins}
  2122. %    Minipages have their own footnotes; |\skip||\@mpfootins| plays
  2123. %    same r\^ole for footnotes in a minipage as |\skip||\footins| does
  2124. %    for ordinary footnotes.
  2125. %    \begin{macrocode}
  2126. \skip\@mpfootins = \skip\footins
  2127. %    \end{macrocode}
  2128. % \end{macro}
  2129. % \subsubsection{Framed boxes}
  2130. % \begin{macro}{\fboxsep}
  2131. %    The space left by |\fbox| and |\framebox| between the box and the
  2132. %    text in it.
  2133. % \begin{macro}{\fboxrule}
  2134. %    The width of the rules in the box made by |\fbox| and |\framebox|.
  2135. %    \begin{macrocode}
  2136. \setlength\fboxsep{3\p@}
  2137. \setlength\fboxrule{.4\p@}
  2138. %    \end{macrocode}
  2139. % \end{macro}
  2140. % \end{macro}
  2141. % \subsubsection{Equation and eqnarray}
  2142. % \begin{macro}{\theequation}
  2143. %    The equation counter will be reset at beginning of a new chapter
  2144. %    and the equation number will be prefixed by the chapter number.
  2145. %    This code  must follow the |\chapter| definition, or more exactly
  2146. %    the definition of the chapter counter.
  2147. %    \begin{macrocode}
  2148. %<+refart>\renewcommand\theequation{\arabic{equation}}
  2149. %<*refrep>
  2150. \@addtoreset{equation}{chapter}
  2151. \renewcommand\theequation{\thechapter.\arabic{equation}}
  2152. %</refrep>
  2153. %    \end{macrocode}
  2154. % \end{macro}
  2155. % \begin{macro}{\jot}
  2156. %    |\jot| is the extra space added between lines of an eqnarray
  2157. %    environment. The default value is used.
  2158. %    \begin{macrocode}
  2159. % \setlength\jot{3pt}
  2160. %    \end{macrocode}
  2161. % \end{macro}
  2162. % \begin{macro}{\@eqnnum}
  2163. %    The macro |\@eqnnum| defines how equation numbers are to appear in
  2164. %    equations. Again the default is used.
  2165. %    \begin{macrocode}
  2166. % \def\@eqnnum{(\theequation)}
  2167. %    \end{macrocode}
  2168. % \end{macro}
  2169. % \subsection{Floating objects}
  2170. %    The file \file{latex.dtx} only defines a number of tools with
  2171. %    which floating objects can be defined. This is done in the
  2172. %    document class. It needs to define the following macros for each
  2173. %    floating object of type \texttt{TYPE} (e.g., \texttt{TYPE} =
  2174. %    figure).
  2175. %    \begin{description}
  2176. %    \item[\texttt{\bslash fps@TYPE}]
  2177. %        The default placement specifier for floats of type
  2178. %        \texttt{TYPE}.
  2179. %    \item[\texttt{\bslash ftype@TYPE}]
  2180. %        The type number for floats of type \texttt{TYPE}.  Each
  2181. %        \texttt{TYPE} has associated a unique positive {\texttt
  2182. %        TYPE} number, which is a power of two.  E.g., figures might
  2183. %        have type number 1, tables type number 2, programs type
  2184. %        number 4, etc.
  2185. %    \item[\texttt{\bslash ext@TYPE}]
  2186. %        The file extension indicating the file on which the contents
  2187. %        list for float type \texttt{TYPE} is stored.  For example,
  2188. %        |\ext@figure| = `lof'.
  2189. %    \item[\texttt{\bslash fnum@TYPE}]
  2190. %        A macro to generate the figure number for a caption. For
  2191. %        example, |\fnum@TYPE| == `Figure |\thefigure|'.
  2192. %    \item[\texttt{\bslash @makecaption{\meta{num}}{\meta{text}}}]
  2193. %        A macro to make a caption, with \meta{num} the value produced
  2194. %        by |\fnum@...| and \meta{text} the text of the caption. It
  2195. %        can assume it's in a |\parbox| of the appropriate width.
  2196. %        This will be used for {\em all} floating objects.
  2197. %    \end{description}
  2198. %    The actual environment that implements a floating object such as
  2199. %    a figure is defined using the macros |\@float| and |\end@float|,
  2200. %    which are defined in \file{latex.dtx}.
  2201. %    An environment that implements a single column floating object is
  2202. %    started with |\@float{|\texttt{TYPE}|}[|\meta{placement}|]| of type
  2203. %    \texttt{TYPE} with \meta{placement} as the placement specifier.
  2204. %    The default value of \meta{PLACEMENT} is defined by |\fps@TYPE|.
  2205. %    The environment is ended by |\end@float|.  E.g., |\figure| ==
  2206. %    |\@float|{figure}, |\endfigure| == |\end@float|.
  2207. % \subsubsection{Figure}
  2208. %    Here is the implementation of the figure environment.
  2209. % \begin{macro}{\c@figure}
  2210. %    First we have to allocate a counter to number the figures. In the
  2211. %    report and book document classes the figures are numbered per
  2212. %    chapter.
  2213. %    \begin{macrocode}
  2214. %<*refart>
  2215. \newcounter{figure}
  2216. \renewcommand\thefigure{\@arabic\c@figure}
  2217. %</refart>
  2218. %<*refrep>
  2219. \newcounter{figure}[chapter]
  2220. \renewcommand\thefigure{\thechapter.\@arabic\c@figure}
  2221. %</refrep>
  2222. %    \end{macrocode}
  2223. % \end{macro}
  2224. % \begin{macro}{\fps@figure}
  2225. % \begin{macro}{\ftype@figure}
  2226. % \begin{macro}{\ext@figure}
  2227. % \begin{macro}{\num@figure}
  2228. %    Here are the parameters for the floating objects of type `figure'.
  2229. %    \begin{macrocode}
  2230. \def\fps@figure{tbp}
  2231. \def\ftype@figure{1}
  2232. \def\ext@figure{lof}
  2233. \def\fnum@figure{\figurename~\thefigure}
  2234. %    \end{macrocode}
  2235. % \end{macro}
  2236. % \end{macro}
  2237. % \end{macro}
  2238. % \end{macro}
  2239. % \begin{environment}{figure}
  2240. % \begin{environment}{figure*}
  2241. %    And the definition of the actual environment. The form with the
  2242. %    |*| is used for double column figures.
  2243. %    \begin{macrocode}
  2244. \newenvironment{figure}
  2245.                {\@float{figure}}
  2246.                {\end@float}
  2247. \newenvironment{figure*}
  2248.                {\@dblfloat{figure}}
  2249.                {\end@dblfloat}
  2250. %    \end{macrocode}
  2251. % \end{environment}
  2252. % \end{environment}
  2253. % \subsubsection{Table}
  2254. %    Here is the implementation of the table environment. It is very
  2255. %    much the same as the figure environment.
  2256. % \begin{macro}{\c@table}
  2257. %    First we have to allocate a counter to number the tables. In the
  2258. %    report and book document classes the tables are numbered per
  2259. %    chapter.
  2260. %    \begin{macrocode}
  2261. %<*refart>
  2262. \newcounter{table}
  2263. \renewcommand\thetable{\@arabic\c@table}
  2264. %</refart>
  2265. %<*refrep>
  2266. \newcounter{table}[chapter]
  2267. \renewcommand\thetable{\thechapter.\@arabic\c@table}
  2268. %</refrep>
  2269. %    \end{macrocode}
  2270. % \end{macro}
  2271. % \begin{macro}{\fps@table}
  2272. % \begin{macro}{\ftype@table}
  2273. % \begin{macro}{\ext@table}
  2274. % \begin{macro}{\num@table}
  2275. %    Here are the parameters for the floating objects of type `table'.
  2276. %    \begin{macrocode}
  2277. \def\fps@table{tbp}
  2278. \def\ftype@table{2}
  2279. \def\ext@table{lot}
  2280. \def\fnum@table{\tablename~\thetable}
  2281. %    \end{macrocode}
  2282. % \end{macro}
  2283. % \end{macro}
  2284. % \end{macro}
  2285. % \end{macro}
  2286. % \begin{environment}{table}
  2287. % \begin{environment}{table*}
  2288. %    And the definition of the actual environment. The form with the
  2289. %    |*| is used for double column tables.
  2290. %    \begin{macrocode}
  2291. \newenvironment{table}
  2292.                {\@float{table}}
  2293.                {\end@float}
  2294. \newenvironment{table*}
  2295.                {\@dblfloat{table}}
  2296.                {\end@dblfloat}
  2297. %    \end{macrocode}
  2298. % \end{environment}
  2299. % \end{environment}
  2300. % \subsubsection{Captions}
  2301. % \begin{macro}{\@makecaption}
  2302. %    The |\caption| command calls |\@makecaption| to format the
  2303. %    caption of floating objects. It gets two arguments,
  2304. %    \meta{number}, the number of the floating object and \meta{text},
  2305. %    the text of the caption. Usually \meta{number} contains a string
  2306. %    such as `Figure 3.2'. The macro can assume it is called inside a
  2307. %    |\parbox| of right width, with |\normalsize|.
  2308. % \begin{macro}{\abovecaptionskip}
  2309. % \begin{macro}{\belowcaptionskip}
  2310. %    These lengths contain the amount of white space to leave above
  2311. %    and below the caption.
  2312. %    \begin{macrocode}
  2313. \newlength\abovecaptionskip
  2314. \newlength\belowcaptionskip
  2315. \setlength\abovecaptionskip{10\p@}
  2316. \setlength\belowcaptionskip{0\p@}
  2317. %    \end{macrocode}
  2318. % \end{macro}
  2319. % \end{macro}
  2320. %    The definition of this macro is |\long| in order to allow more
  2321. %    then one paragraph in a caption.
  2322. %    \begin{macrocode}
  2323. \long\def\@makecaption#1#2{%
  2324.   \vskip\abovecaptionskip
  2325. %    \end{macrocode}
  2326. %    We want to see if the caption fits on one line on the page,
  2327. %    therefore we first typeset it in a temporary box.
  2328. %    \begin{macrocode}
  2329.   \sbox\@tempboxa{#1: #2}%
  2330. %    \end{macrocode}
  2331. %    We can the measure its width. It that is larger than the current
  2332. %    |\hsize| we typeset the caption as an ordinary paragraph.
  2333. %    \begin{macrocode}
  2334.   \ifdim \wd\@tempboxa >\hsize
  2335.     #1: #2\par
  2336. %    \end{macrocode}
  2337. %    If the caption fits, we center it.
  2338. %    \begin{macrocode}
  2339.   \else
  2340.     \hbox to\hsize{\hfil\box\@tempboxa\hfil}%
  2341.   \fi
  2342.   \vskip\belowcaptionskip}
  2343. %    \end{macrocode}
  2344. % \end{macro}
  2345. % \subsection{Font changing}
  2346. %    Here we supply the declarative font changing commands that were
  2347. %    common in \LaTeX\ version 2.09 and earlier. These commands work
  2348. %    in text mode \emph{and} in math mode. They are provided for
  2349. %    compatibility, but one should start using the |\text...| and
  2350. %    |\math...| commands instead. These commands are defined using
  2351. %    |\@newfontswitch|, a command with three arguments: the user
  2352. %    command to be defined; \LaTeX\ commands to execute in text mode
  2353. %    and \LaTeX\ commands to execute in math mode.
  2354. %  \begin{macro}{\rm}
  2355. %  \begin{macro}{\tt}
  2356. %  \begin{macro}{\sf}
  2357. %    The commands to change the family. When in compatibility mode we
  2358. %    select the `default' font first, to get \LaTeX2.09 behviour.
  2359. %    \begin{macrocode}
  2360. \DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
  2361. \DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
  2362. \DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
  2363. %    \end{macrocode}
  2364. %  \end{macro}
  2365. %  \end{macro}
  2366. %  \end{macro}
  2367. %  \begin{macro}{\bf}
  2368. %    The command to change to the bold series. One should use
  2369. %    |\mdseries| to explicitly switch back to medium series.
  2370. %    \begin{macrocode}
  2371. \DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
  2372. %    \end{macrocode}
  2373. %  \end{macro}
  2374. %  \begin{macro}{\sl}
  2375. %  \begin{macro}{\it}
  2376. %  \begin{macro}{\sc}
  2377. %    And the commands to change the shape of the font. The slanted and
  2378. %    small caps shapes are not available by default as math alphabets,
  2379. %    so those changes do nothing in math mode. One should use
  2380. %    |\upshape| to explicitly change back to the upright shape.
  2381. %    \begin{macrocode}
  2382. \DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
  2383. \DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl}
  2384. \DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc}
  2385. %    \end{macrocode}
  2386. %  \end{macro}
  2387. %  \end{macro}
  2388. %  \end{macro}
  2389. % \begin{macro}{\cal}
  2390. % \begin{macro}{\mit}
  2391. %    The commands |\cal| and |\mit| should only be used in math mode,
  2392. %    outside math mode they have no effect. Currently the New Font
  2393. %    Selection Scheme defines these commands to generate warning
  2394. %    messages. Therefore we have to define them `by hand'.
  2395. %    \begin{macrocode}
  2396. \renewcommand{\cal}{\protect\pcal}
  2397. \newcommand{\pcal}{\@fontswitch{\relax}{\mathcal}}
  2398. \renewcommand{\mit}{\protect\pmit}
  2399. \newcommand{\pmit}{\@fontswitch{\relax}{\mathnormal}}
  2400. %    \end{macrocode}
  2401. %  \end{macro}
  2402. %  \end{macro}
  2403. % \section{Cross Referencing}
  2404. % \subsection{Table of Contents, etc.}
  2405. %     A |\section| command writes a
  2406. %     |\contentsline{section}{|\meta{title}|}{|\meta{page}|}| command
  2407. %     on the \file{.toc} file, where \meta{title} contains the
  2408. %     contents of the entry and \meta{page} is the page number. If
  2409. %     sections are being numbered, then \meta{title} will be of the
  2410. %     form |\numberline{|\meta{num}|}{|\meta{heading}|}| where
  2411. %     \meta{num} is the number produced by |\thesection|.  Other
  2412. %     sectioning commands work similarly.
  2413. %     A |\caption| command in a `figure' environment writes
  2414. %     |\contentsline{figure}{\numberline{|\meta{num}|}{|%
  2415. %                    \meta{caption}|}}{|\meta{page}|}|
  2416. %     on the .\file{lof} file, where \meta{num} is the number produced
  2417. %     by |\thefigure| and \meta{caption} is the figure caption.  It
  2418. %     works similarly for a `table' environment.
  2419. %    The command |\contentsline{|\meta{name}|}| expands to
  2420. %    |\l@|\meta{name}.  So, to specify the table of contents, we must
  2421. %    define |\l@chapter|, |\l@section|, |\l@subsection|, ... ; to
  2422. %    specify the list of figures, we must define |\l@figure|; and so
  2423. %    on.  Most of these can be defined with the |\@dottedtocline|
  2424. %    command, which works as follows.
  2425. %    |\@dottedtocline{|\meta{level}|}{|\meta{indent}|}{|^^A
  2426. %                      \meta{numwidth}|}{|^^A
  2427. %                      \meta{title}|}{|\meta{page}|}|
  2428. %    \begin{description}
  2429. %    \item[\meta{level}] An entry is produced only if\meta{ level}
  2430. %        $<=$ value of the \Lcount{tocdepth} counter.  Note,
  2431. %        |\chapter| is level 0, |\section| is level 1, etc.
  2432. %    \item[\meta{indent}] The indentation from the outer left margin
  2433. %        of the start   of the contents line.
  2434. %    \item[\meta{numwidth}] The width of a box in which the section
  2435. %        number is to go, if \meta{title} includes a |\numberline|
  2436. %        command.
  2437. %    \end{description}
  2438. % \begin{macro}{\@pnumwidth}
  2439. % \begin{macro}{\@tocrmarg}
  2440. % \begin{macro}{\@dotsep}
  2441. %    This command uses the following three parameters, which are set
  2442. %    with a |\newcommand| (so em's can be used to make them depend upon
  2443. %    the font).
  2444. %    \begin{description}
  2445. %    \item[\texttt{\bslash @pnumwidth}] The width of a box in which the
  2446. %        page number is put.
  2447. %    \item[\texttt{\bslash @tocrmarg}] The right margin for multiple
  2448. %        line entries.  One wants |\@tocrmarg| > or = |\@pnumwidth|
  2449. %    \item[\texttt{\bslash @dotsep}] Separation between dots, in mu
  2450. %        units. Should be defined as a number like 2 or 1.7
  2451. %    \end{description}
  2452. %    \begin{macrocode}
  2453. \newcommand\@pnumwidth{1.55em}
  2454. \newcommand\@tocrmarg {2.55em}
  2455. \newcommand\@dotsep{4.5}
  2456. %<+refart>\setcounter{tocdepth}{3}
  2457. %<+refrep>\setcounter{tocdepth}{2}
  2458. %    \end{macrocode}
  2459. % \end{macro}
  2460. % \end{macro}
  2461. % \end{macro}
  2462. % \subsubsection{Table of Contents}
  2463. % \begin{macro}{\tableofcontents}
  2464. %    This macro is used to request that \LaTeX{} produces a table of
  2465. %    contents. In the report and book document classes the tables of
  2466. %    contents, figures etc. are always set in single-column style.
  2467. %    \begin{macrocode}
  2468. \newcommand\tableofcontents{%
  2469. %<*refrep>
  2470.     \if@twocolumn
  2471.       \@restonecoltrue\onecolumn
  2472.     \else
  2473.       \@restonecolfalse
  2474.     \fi
  2475. %    \end{macrocode}
  2476. %    The title is set using the |\chapter*| command, making sure that
  2477. %    the running head --if one is required-- contains the right
  2478. %    information.
  2479. %    \begin{macrocode}
  2480.     \chapter*{\contentsname
  2481. %</refrep>
  2482. %<+refart>    \section*{\contentsname
  2483.         \@mkboth{\contentsname}{\contentsname}}%
  2484. %    \end{macrocode}
  2485. %    The the actual table of contents is made by calling
  2486. %    |\@starttoc{toc}|. After that we restore twocolumn mode if
  2487. %    necessary.
  2488. %    \begin{macrocode}
  2489.     \@starttoc{toc}%
  2490.     \if@restonecol\twocolumn\fi
  2491.     }
  2492. %    \end{macrocode}
  2493. % \end{macro}
  2494. % \begin{macro}{\l@part}
  2495. %    Each sectioning command needs an additional macro  to format its
  2496. %    entry in the table of contents, as described above. The macro for
  2497. %    the entry for parts is defined in a special way.
  2498. %    First we make sure that if a pagebreak should occur, it occurs
  2499. %    {\em before} this entry. Also a little whitespace is added and a
  2500. %    group begun to keep changes local.
  2501. %    \begin{macrocode}
  2502. \newcommand\l@part[2]{%
  2503.   \ifnum \c@tocdepth >-2\relax
  2504. %<+refart>    \addpenalty{\@secpenalty}%
  2505. %<+refrep>    \addpenalty{-\@highpenalty}%
  2506.     \addvspace{2.25em \@plus\p@}%
  2507.     \begingroup
  2508. %    \end{macrocode}
  2509. %    The macro |\numberline| requires that the width of the box that
  2510. %    holds the part number is stored in \LaTeX's scratch register
  2511. %    |\@tempdima|. Therefore we put it there.
  2512. %    \begin{macrocode}
  2513.       \setlength\@tempdima{3em}%
  2514. %    \end{macrocode}
  2515. %    The we set |\parindent| to 0pt and use |\rightskip| to leave
  2516. %    enough room for the pagenumbers. To prevent overfull box messages
  2517. %    the |\parfillskip| is set to a negative value.
  2518. %    \begin{macrocode}
  2519.       \parindent \z@ \rightskip \@pnumwidth
  2520.       \parfillskip -\@pnumwidth
  2521. %    \end{macrocode}
  2522. %    Now we can set the entry, in a large bold font. We make sure to
  2523. %    leave vertical mode, set the part title and add the pagenumber,
  2524. %    set flush right.
  2525. %    \begin{macrocode}
  2526.       {\leavevmode
  2527.        \large \bfseries #1\hfil \hbox to\@pnumwidth{\hss #2}}\par
  2528. %    \end{macrocode}
  2529. %    Prevent a pagebreak immediately after this entry, but use
  2530. %    |\everypar| to reset the |\if@nobreak| switch. Finally we close
  2531. %    the group.
  2532. %    \begin{macrocode}
  2533.        \nobreak
  2534.          \global\@nobreaktrue
  2535.          \everypar{\global\@nobreakfalse\everypar{}}
  2536.       \endgroup
  2537.   \fi}
  2538. %    \end{macrocode}
  2539. % \end{macro}
  2540. % \begin{macro}{\l@chapter}
  2541. %    This macro formats the entries in the table of contents for
  2542. %    chapters. It is very similar to |\l@part|
  2543. %    First we make sure that if a pagebreak should occur, it occurs
  2544. %    {\em before} this entry. Also a little whitespace is added and a
  2545. %    group begun to keep changes local.
  2546. %    \begin{macrocode}
  2547. %<*refrep>
  2548. \newcommand\l@chapter[2]{%
  2549.   \ifnum \c@tocdepth >\m@ne
  2550.     \addpenalty{-\@highpenalty}%
  2551.     \vskip 1.0em \@plus\p@
  2552. %    \end{macrocode}
  2553. %    The macro |\numberline| requires that the width of the box that
  2554. %    holds the part number is stored in \LaTeX's scratch register
  2555. %    |\@tempdima|. Therefore we put it there. We begin a group, and
  2556. %    change some of the paragraph parameters.
  2557. %    \begin{macrocode}
  2558.     \setlength\@tempdima{1.5em}%
  2559.     \begingroup
  2560.     \parindent \z@ \rightskip \@pnumwidth
  2561.     \parfillskip -\@pnumwidth
  2562. %    \end{macrocode}
  2563. %    Then we leave vertical mode and switch to a bold font.
  2564. %    \begin{macrocode}
  2565.     \leavevmode \bfseries
  2566. %    \end{macrocode}
  2567. %    Because we do not use |\numberline| here, we have do some fine
  2568. %    tuning `by hand', before we can set the entry. We discourage but
  2569. %    not disallow a pagebreak immediately after a chapter entry.
  2570. %    \begin{macrocode}
  2571.     \advance\leftskip\@tempdima
  2572.     \hskip -\leftskip
  2573.     #1\nobreak\hfil \nobreak\hbox to\@pnumwidth{\hss #2}\par
  2574.     \penalty\@highpenalty
  2575.    \endgroup
  2576.   \fi}
  2577. %</refrep>
  2578. %    \end{macrocode}
  2579. % \end{macro}
  2580. % \begin{macro}{\l@section}
  2581. %    In the article document class the entry in the table of contents
  2582. %    for sections looks much like the chapter entries for the report
  2583. %    and book document classes.
  2584. %    First we make sure that if a pagebreak should occur, it occurs
  2585. %    {\em before} this entry. Also a little whitespace is added and a
  2586. %    group begun to keep changes local.
  2587. %    \begin{macrocode}
  2588. %<*refart>
  2589. \newcommand\l@section[2]{%
  2590.   \ifnum \c@tocdepth >\z@
  2591.     \addpenalty{\@secpenalty}%
  2592.     \addvspace{1.0em \@plus\p@}%
  2593. %    \end{macrocode}
  2594. %    The macro |\numberline| requires that the width of the box that
  2595. %    holds the part number is stored in \LaTeX's scratch register
  2596. %    |\@tempdima|. Therefore we put it there. We begin a group, and
  2597. %    change some of the paragraph parameters.
  2598. %    \begin{macrocode}
  2599.     \setlength\@tempdima{1.5em}%
  2600.     \begingroup
  2601.     \parindent \z@ \rightskip \@pnumwidth
  2602.     \parfillskip -\@pnumwidth
  2603. %    \end{macrocode}
  2604. %    Then we leave vertical mode and switch to a bold font.
  2605. %    \begin{macrocode}
  2606.     \leavevmode \bfseries
  2607. %    \end{macrocode}
  2608. %    Because we do not use |\numberline| here, we have do some fine
  2609. %    tuning `by hand', before we can set the entry. We discourage but
  2610. %    not disallow a pagebreak immediately after a chapter entry.
  2611. %    \begin{macrocode}
  2612.     \advance\leftskip\@tempdima
  2613.     \hskip -\leftskip
  2614.     #1\nobreak\hfil \nobreak\hbox to\@pnumwidth{\hss #2}\par
  2615.    \endgroup
  2616.  \fi}
  2617. %</refart>
  2618. %    \end{macrocode}
  2619. %    In the report and book document classes the definition for
  2620. %    |\l@section| is much simpler.
  2621. %    \begin{macrocode}
  2622. %<*refrep>
  2623. \newcommand\l@section      {\@dottedtocline{1}{1.5em}{2.3em}}
  2624. %</refrep>
  2625. %    \end{macrocode}
  2626. % \end{macro}
  2627. % \begin{macro}{\l@subsection}
  2628. % \begin{macro}{\l@subsubsection}
  2629. % \begin{macro}{\l@paragraph}
  2630. % \begin{macro}{\l@subparagraph}
  2631. %    All lower level entries are defined using the macro
  2632. %    |\@dottedtocline| (see above).
  2633. %    \begin{macrocode}
  2634. %<*refart>
  2635. \newcommand\l@subsection   {\@dottedtocline{2}{1.5em}{2.3em}}
  2636. \newcommand\l@subsubsection{\@dottedtocline{3}{3.8em}{3.2em}}
  2637. \newcommand\l@paragraph    {\@dottedtocline{4}{7.0em}{4.1em}}
  2638. \newcommand\l@subparagraph {\@dottedtocline{5}{10em}{5em}}
  2639. %</refart>
  2640. %<*refrep>
  2641. \newcommand\l@subsection   {\@dottedtocline{2}{3.8em}{3.2em}}
  2642. \newcommand\l@subsubsection{\@dottedtocline{3}{7.0em}{4.1em}}
  2643. \newcommand\l@paragraph    {\@dottedtocline{4}{10em}{5em}}
  2644. \newcommand\l@subparagraph {\@dottedtocline{5}{12em}{6em}}
  2645. %</refrep>
  2646. %    \end{macrocode}
  2647. % \end{macro}
  2648. % \end{macro}
  2649. % \end{macro}
  2650. % \end{macro}
  2651. % \subsubsection{List of figures}
  2652. % \begin{macro}{\listoffigures}
  2653. %    This macro is used to request that \LaTeX{} produces a list of
  2654. %    figures. It is very similar to |\tableofcontents|.
  2655. %    \begin{macrocode}
  2656. \newcommand\listoffigures{%
  2657. %<*refrep>
  2658.     \if@twocolumn
  2659.       \@restonecoltrue\onecolumn
  2660.     \else
  2661.       \@restonecolfalse
  2662.     \fi
  2663.     \chapter*{\listfigurename
  2664. %</refrep>
  2665. %<+refart>    \section*{\listfigurename
  2666.       \@mkboth{\listfigurename}%
  2667.               {listfigurename}}%
  2668.     \@starttoc{lof}%
  2669. %<+refrep>    \if@restonecol\twocolumn\fi
  2670.     }
  2671. %    \end{macrocode}
  2672. % \end{macro}
  2673. % \begin{macro}{\l@figure}
  2674. %    This macro produces an entry in the list of figures.
  2675. %    \begin{macrocode}
  2676. \newcommand\l@figure{\@dottedtocline{1}{1.5em}{2.3em}}
  2677. %    \end{macrocode}
  2678. % \end{macro}
  2679. % \subsubsection{List of tables}
  2680. % \begin{macro}{\listoftables}
  2681. %    This macro is used to request that \LaTeX{} produces a list of
  2682. %    tables. It is very similar to |\tableofcontents|.
  2683. %    \begin{macrocode}
  2684. \newcommand\listoftables{%
  2685. %<*refrep>
  2686.     \if@twocolumn
  2687.       \@restonecoltrue\onecolumn
  2688.     \else
  2689.       \@restonecolfalse
  2690.     \fi
  2691.     \chapter*{\listtablename
  2692. %</refrep>
  2693. %<+refart>    \section*{\listtablename
  2694.       \@mkboth{\listtablename}{\listtablename}}%
  2695.     \@starttoc{lot}%
  2696. %<+refrep>    \if@restonecol\twocolumn\fi
  2697.     }
  2698. %    \end{macrocode}
  2699. % \end{macro}
  2700. % \begin{macro}{\l@table}
  2701. %    This macro produces an entry in the list of tables.
  2702. %    \begin{macrocode}
  2703. \let\l@table\l@figure
  2704. %    \end{macrocode}
  2705. % \end{macro}
  2706. % \subsection{Bibliography}
  2707. % \begin{macro}{\bibindent}
  2708. %    The ``open'' bibliography format uses an indentation of
  2709. %    |\bibindent|.
  2710. %    \begin{macrocode}
  2711. \newdimen\bibindent
  2712. \bibindent=1.5em
  2713. %    \end{macrocode}
  2714. % \end{macro}
  2715. % \begin{macro}{\thebibliography}
  2716. % \begin{macro}{\newblock}
  2717. %    The `thebibliography' environment executes the following
  2718. %    commands:
  2719. %    |\renewcommand\newblock{\hskip .11em \@plus .33em \@minus .07em}|
  2720. %      -- Defines the ``closed'' format, where the blocks (major units
  2721. %      of information) of an entry run together.
  2722. %    |\sloppy|  -- Used because it's rather hard to do line breaks in
  2723. %      bibliographies,
  2724. %    |\sfcode`\.=1000\relax| --
  2725. %      Causes a `.' (period) not to produce an end-of-sentence space.
  2726. %    The implementation of this environment is based on the generic
  2727. %    list environment. It uses the \Lcount{enumiv} counter internally
  2728. %    to generate the labels of the list.
  2729. %    When an empty `thebijliography' environment is found, a warning
  2730. %    is issued.
  2731. %    \begin{macrocode}
  2732. \newcommand\newblock{}
  2733. \newenvironment{thebibliography}[1]
  2734. %<+refart>     {\section*{\refname
  2735. %<+refart>         \@mkboth{\refname}{\refname}}%
  2736. %<+refrep>     {\chapter*{\bibname
  2737. %<+refrep>         \@mkboth{\bibname}{\bibname}}%
  2738.       \list{\@biblabel{\arabic{enumiv}}}%
  2739.    {\settowidth\labelwidth{\@biblabel{#1}}%
  2740.             \leftmargin\labelwidth
  2741.             \advance\leftmargin\labelsep
  2742.             \if@openbib
  2743.               \advance\leftmargin\bibindent
  2744.               \itemindent -\bibindent
  2745.               \listparindent \itemindent
  2746.               \parsep \z@
  2747.             \fi
  2748.             \usecounter{enumiv}%
  2749.             \let\p@enumiv\@empty
  2750.             \renewcommand\theenumiv{\arabic{enumiv}}}%
  2751.       \if@openbib
  2752.         \renewcommand\newblock{\par}
  2753.       \else
  2754.         \renewcommand\newblock{\hskip .11em \@plus.33em \@minus.07em}%
  2755.       \fi
  2756.       \sloppy\clubpenalty4000\widowpenalty4000%
  2757.       \sfcode`\.=\@m}
  2758.      {\def\@noitemerr{\@warning{Empty `thebibliography' environment}}%
  2759.       \endlist}
  2760. %    \end{macrocode}
  2761. % \end{macro}
  2762. % \end{macro}
  2763. % \begin{macro}{\@biblabel}
  2764. %    The label for a |\bibitem[...]| command is produced by this
  2765. %    macro. The default from \file{latex.dtx} is used.
  2766. %    \begin{macrocode}
  2767. % \renewcommand\@biblabel[1]{[#1]\hfill}
  2768. %(   \end{macrocode}
  2769. % \end{macro}
  2770. % \begin{macro}{\@cite}
  2771. %    The output of the |\cite| command is produced by this macro. The
  2772. %    default from \file{latex.dtx} is used.
  2773. %    \begin{macrocode}
  2774. % \renewcommand\@cite[1]{[#1]}
  2775. %    \end{macrocode}
  2776. % \end{macro}
  2777. %  \subsection{The index}
  2778. % \begin{macro}{\theindex}
  2779. %    The environment `theindex' can be used for indices. It makes an
  2780. %    index with two columns, with each entry a seperate paragraph. At
  2781. %    the user level the commands |\item|, |\subitem| and |\subsubitem|
  2782. %    are used to produce index entries of various levels. When a new
  2783. %    letter of the alphabet is encountered an amount of |\indexspace|
  2784. %    white space can be added.
  2785. %    \begin{macrocode}
  2786. \newenvironment{theindex}
  2787.                {\if@twocolumn
  2788.                   \@restonecolfalse
  2789.                 \else
  2790.                   \@restonecoltrue
  2791.                 \fi
  2792.                 \begin{fullpage}
  2793.                 \let\twocolumn\REF@twocolumn
  2794.                 \columnseprule \z@
  2795.                 \columnsep 35\p@
  2796. %<+refart>                \twocolumn[\section*{\indexname}]%
  2797. %<+refrep>                \twocolumn[\@makeschapterhead{\indexname}]%
  2798.                 \@mkboth{\indexname}%
  2799.                         {\indexname}%
  2800.                 \thispagestyle{plain}\parindent\z@
  2801.                 \parskip\z@ \@plus .3\p@\relax
  2802.                 \let\item\@idxitem}
  2803. %    \end{macrocode}
  2804. %    When the document continues after the index and it was a one
  2805. %    column document we have to switch back to one column after the
  2806. %    index.
  2807. %    \begin{macrocode}
  2808.                {\end{fullpage}\if@restonecol\onecolumn\else\clearpage\fi}
  2809. %    \end{macrocode}
  2810. % \end{macro}
  2811. % \begin{macro}{\@idxitem}
  2812. % \begin{macro}{\subitem}
  2813. % \begin{macro}{\subsubitem}
  2814. %    Thsee macros are used to format the entries in the index. ^^AA ???
  2815. %    \begin{macrocode}
  2816. \newcommand\@idxitem  {\par\hangindent 40\p@}
  2817. \newcommand\subitem   {\par\hangindent 40\p@ \hspace*{20\p@}}
  2818. \newcommand\subsubitem{\par\hangindent 40\p@ \hspace*{30\p@}}
  2819. %    \end{macrocode}
  2820. % \end{macro}
  2821. % \end{macro}
  2822. % \end{macro}
  2823. % \begin{macro}{\indexspace}
  2824. %    The amount of white space that is inserted between `letter
  2825. %    blocks' in the index.
  2826. %    \begin{macrocode}
  2827. \newcommand\indexspace{\par \vskip 10\p@ \@plus5\p@ \@minus3\p@\relax}
  2828. %    \end{macrocode}
  2829. % \end{macro}
  2830. % \subsection{Footnotes}
  2831. % \begin{macro}{\footnoterule}
  2832. %    Usually, footnotes are separated from the main body of the text
  2833. %    by a small rule. This rule is drawn by the macro |\footnoterule|.
  2834. %    We have to make sure that the rule takes no vertical space (see
  2835. %    \file{plain.tex}) so we compensate for the natural heigth of the
  2836. %    rule of 0.4pt by adding the right amount of vertical skip.
  2837. %    To prevent the rule from colliding with the footnote we first add
  2838. %    a little negative vertical skip, then we put the rule and make
  2839. %    sure we end up at the same point where we begun this operation.
  2840. %    \begin{macrocode}
  2841. \renewcommand\footnoterule{%
  2842.   \kern-3\p@
  2843.   \hrule width .4\columnwidth
  2844.   \kern 2.6\p@}
  2845. %    \end{macrocode}
  2846. % \end{macro}
  2847. % \begin{macro}{\c@footnote}
  2848. %    Footnotes are numbered within chapters in the report and book
  2849. %    document styles.
  2850. %    \begin{macrocode}
  2851. % \newcounter{footnote}
  2852. %<+refrep>\@addtoreset{footnote}{chapter}
  2853. %    \end{macrocode}
  2854. % \end{macro}
  2855. % \begin{macro}{\@makefntext}
  2856. %    The footnote mechanism of \LaTeX{} calls the macro |\@makefntext|
  2857. %    to produce the actual footnote. The macro gets the text of the
  2858. %    footnote as its argument and should use |\@thefnmark| as the mark
  2859. %    of the footnote. The macro |\@makefntext|is called when
  2860. %    effectively inside a |\parbox| of width |\columnwidth| (i.e.,
  2861. %    with |\hsize| = |\columnwidth|).
  2862. %   An example of what can be achieved is given by the following piece
  2863. %   of \TeX\ code.
  2864. % \begin{verbatim}
  2865. %          \long\def\@makefntext#1{%
  2866. %             \@setpar{\@@par
  2867. %                      \@tempdima = \hsize
  2868. %                      \advance\@tempdima-10\p@
  2869. %                      \parshape \@ne 10\p@ \@tempdima}%
  2870. %             \par
  2871. %             \parindent 1em\noindent
  2872. %             \hbox to \z@{\hss$\m@th^{\@thefnmark}$}#1}
  2873. % \end{verbatim}
  2874. %    The effect of this definition is that all lines of the footnote
  2875. %    are indented by 10pt, while the first line of a new paragraph is
  2876. %    indented by 1em. To change these dimensions, just substitute the
  2877. %    desired value for `10pt' (in both places) or `1em'.  The mark is
  2878. %    flushright against the footnote.
  2879. %    In these document classes we use a simpler macro, in which the
  2880. %    footnote text is set like an ordinary text paragraph, with no
  2881. %    indentation except on the first line of a paragraph, and the
  2882. %    first line of the footnote. Thus, all the macro must do is set
  2883. %    |\parindent| to the appropriate value for succeeding paragraphs
  2884. %    and put the proper indentation before the mark.
  2885. %    \begin{macrocode}
  2886. \long\def\@makefntext#1{%
  2887.     \@setpar{\@@par
  2888.             \@tempdima = \hsize
  2889.             \advance\@tempdima -1em
  2890.             \parshape \@ne 1em \@tempdima}%
  2891.     \par
  2892.     \parindent 1em \noindent
  2893.     \hbox to \z@{\hss\@makefnmark}#1}
  2894. %    \end{macrocode}
  2895. % \end{macro}
  2896. % \begin{macro}{\@makefnmark}
  2897. %    The footnote markers that are printed in the text to point to the
  2898. %    footnotes should be produced by the macro |\@makefnmark|. We use
  2899. %    the default definition for it.
  2900. %    \begin{macrocode}
  2901. %\def\@makefnmark{\hbox{$^{\@thefnmark}\m@th$}}
  2902. %    \end{macrocode}
  2903. % \end{macro}
  2904. %  \section{New commands}
  2905. %    \begin{macro}{\@addmarginpar}
  2906. %   Redefine the |\@addmarginpar| command to only use the left
  2907. %   margin.
  2908. %    \begin{macrocode}
  2909. \def\@addmarginpar{\@next\@marbox\@currlist{\@cons\@freelist\@marbox
  2910.     \@cons\@freelist\@currbox}\@latexbug\@tempcnta\@ne
  2911.     \if@twocolumn
  2912.      (  \if@firstcolumn \@tempcnta\m@ne \fi
  2913.     \else
  2914.          \@tempcnta\m@ne
  2915.     \fi
  2916.     \ifnum\@tempcnta <\z@  \global\setbox\@marbox\box\@currbox \fi
  2917.     \@tempdima\@mparbottom
  2918.     \advance\@tempdima -\@pageht
  2919.     \advance\@tempdima\ht\@marbox
  2920.     \ifdim\@tempdima >\z@
  2921.       \@@warning{Marginpar on page \thepage\space moved}%
  2922.     \else
  2923.       \@tempdima\z@
  2924.     \fi
  2925.     \global\@mparbottom\@pageht
  2926.     \global\advance\@mparbottom\@tempdima
  2927.     \global\advance\@mparbottom\dp\@marbox
  2928.     \global\advance\@mparbottom\marginparpush
  2929.     \advance\@tempdima -\ht\@marbox
  2930.     \global\setbox \@marbox
  2931.                    \vbox {\vskip \@tempdima \box \@marbox}%
  2932.     \global \ht\@marbox \z@
  2933.     \global \dp\@marbox \z@
  2934.     \kern -\@pagedp
  2935.     \nointerlineskip
  2936.     \hbox to\columnwidth
  2937.       {\ifnum \@tempcnta >\z@
  2938.           \hskip\columnwidth \hskip\marginparsep
  2939.        \else
  2940.           \hskip -\marginparsep \hskip -\marginparwidth
  2941.        \fi
  2942.        \box\@marbox \hss}%
  2943.     \nointerlineskip
  2944.     \hbox{\vrule \@height\z@ \@width\z@ \@depth\@pagedp}}
  2945. %    \end{macrocode}
  2946. %   \end{macro}
  2947. %   \subsection{Margin commands}
  2948. %   \begin{macro}{\marginlable}
  2949. %   \begin{macro}{\attention}
  2950. %   \begin{macro}{\seealso}
  2951. %   This defines three commands to put information in the margin:
  2952. %   |\marginlabel| buts the argument into a flushright marginpar,
  2953. %   |\attention| puts !$\rightarrow$ to the left of the text to mark
  2954. %   an important piece of text and |\seealso| puts a $\rightarrow$ to
  2955. %   the left oft the margin to mark a reference within the text.
  2956. %    \begin{macrocode}
  2957. \def\marginlabel#1{\mbox{}\marginpar{\raggedleft #1}\ignorespaces}
  2958. \def\attention{\mbox{}\marginpar{\raggedleft \large\bfseries ! 
  2959.                $\rightarrow$}}
  2960. \def\seealso#1{\mbox{}\marginpar{\small $\rightarrow$ #1}\ignorespaces}
  2961. %    \end{macrocode} 
  2962. %   \end{macro}
  2963. %   \end{macro}
  2964. %   \end{macro}
  2965. %   \subsection{Rules}
  2966. %   \begin{macro}{\longrule}
  2967. %   \begin{macro}{\longthickrule}
  2968. %   These rules are used in several places, like the title, new
  2969. %   parts and chapters and for maxi and fullpages.
  2970. %    \begin{macrocode}
  2971. \def\longrule{\par\hbox to \linewidth{\hss
  2972.               \vrule width \fullwidth height 0.4\p@ depth \z@}\par}
  2973. \def\longthickrule{\par\hbox to \linewidth{\hss
  2974.               \vrule width \fullwidth height 1.0\p@ depth \z@}\par}
  2975. %    \end{macrocode}
  2976. %   \end{macro}
  2977. %   \end{macro}
  2978. %   \subsection{Pages}
  2979. %   \begin{macro}{\maxipage}
  2980. %   \begin{macro}{\fullpage}
  2981. %   The |\maxipage| is a minipage which uses the full width of
  2982. %   the page with optional rules on the top and bottom. A maxipage
  2983. %   can not split over pages. You can use it for wide tables, long
  2984. %   math equations and the like. It can be used in floats.
  2985. %   The |\fullpage| changes the page layout such that normal text
  2986. %   and all environments use the full width of the page. This will
  2987. %   be used in the index. (Not implemented yet!)
  2988. %    \begin{macrocode}
  2989. \newenvironment{maxipage}{\par
  2990.               \mbox{}\kern-\leftmarginwidth %\kern-\@totalleftmargin
  2991.               \begin{minipage}{\fullwidth}
  2992.                 \medskip \ifmaxipagerule \hrule\medskip \fi
  2993.                 \parskip = 0.5\baselineskip
  2994.                 \def\marginpar{%
  2995. %<+refart>                \ClassError{Refart}
  2996. %<+refrep>                \ClassError{Refrep}
  2997.                 {Marginpar not allowed within Maxipage.}
  2998.                 {Where should I put them?\MessageBreak
  2999.                  I'm using the full pagewidth.}}}
  3000.               {\par \vskip\parskip
  3001.                  \medskip \ifmaxipagerule \hrule\medskip \fi
  3002.                \end{minipage}\par}
  3003. \newenvironment{fullpage}{%
  3004.               \textwidth=\fullwidth
  3005.               \addtolength\oddsidemargin  {-\leftmarginwidth}
  3006.               \setlength\evensidemargin{\oddsidemargin}              
  3007.               \linewidth=\fullwidth
  3008.               \columnwidth=\fullwidth
  3009.               \clearpage
  3010.               \def\marginpar{%
  3011. %<+refart>                \ClassError{Refart}
  3012. %<+refrep>                \ClassError{Refrep}
  3013.                 {Marginpar not allowed within Fullpage.}
  3014.                 {Where should I put them? I'm already\MessageBreak
  3015.                  using the whole page for text.}}}
  3016.               {\clearpage}
  3017. %    \end{macrocode}
  3018. %   \end{macro}
  3019. %   \end{macro}
  3020. %   \subsection{Miscellaneous}
  3021. %   \begin{macro}{\condbreak}
  3022. %   \begin{macro}{\noparskip}
  3023. %    The |\condbreak{length}| controls pagebreaks:
  3024. %    If less then length is left on this page it will be moved
  3025. %    to the next page. Thus it will remain together, either on
  3026. %    this page or on the next.
  3027. %    |\noparskip| removes the vertical parskip like |\noindent|
  3028. %    removes the parindent.
  3029. %    \begin{macrocode}
  3030. \def\condbreak#1{@vskip \z@ plus #1\pagebreak[3]\vskip \z@ plus -#1\relax}
  3031. \def\noparskip{\vskip-\parskip}
  3032. %    \end{macrocode}
  3033. %   \end{macro}
  3034. %   \end{macro}
  3035. %   \begin{macro}{\REF@twocolumn}
  3036. %   \begin{macro}{\twocolumn}
  3037. %     Since this layout does not support |\twocolumn| the
  3038. %     command is disabled but saved in |\REF@twocolumn|. The
  3039. %     saved version will be used in the index. This is still
  3040. %     experimental! Don't rely on it in future releases.
  3041. %    \begin{macrocode}
  3042. \let\REF@twocolumn\twocolumn
  3043. \def\twocolumn{%
  3044. %<+refart>\ClassError{Refart}
  3045. %<+refrep>\ClassError{Refrep}
  3046. {Sorry, there is no twocolumn layout in this class}
  3047. {Can you imagine how twocolumn layout will look?\MessageBreak
  3048.  That's why!}}
  3049. %    \end{macrocode}
  3050. %   \end{macro}
  3051. %   \end{macro}
  3052. %   \subsection{Obsolete commands}
  3053. %   Well, these comands are not really obsolete, but they are not
  3054. %   implemented in this version and will not be implemented later
  3055. %   unless there is popular demand.
  3056. %   |\makeauthor|: The author is printed when |\maketitel| is
  3057. %   executed thus there is no need for this command.
  3058. %   |\setleftmarginwidth| has been used in version 1.1 to
  3059. %   change the horizontal layout. I would prefer to set the
  3060. %   |leftmarginfraction| instead but I'm still open to
  3061. %   suggestions from users.
  3062. %   \subsection{Future commands}
  3063. %   The following commands are not yet implemented but sound
  3064. %   like a good idea.
  3065. %   \begin{macro}{\pagebychapter}
  3066. %    This gives you a pagecount per chapter like 1-1, 1-2, 2-1.
  3067. %    Since this is often requested and would be usefull in a
  3068. %    reference manual style. |\pageperchapter| is only supported
  3069. %    in refrep.cls
  3070. %    \begin{macrocode}
  3071. %<+refrep>\newif\if@pageperchapter \@pageperchapterfalse
  3072. %<+refrep>\newcommand{\pageperchapter}
  3073. %<+refrep>    {\@pageperchaptertrue
  3074. %<+refrep>     \renewcommand\@pnumwidth{2.55em}
  3075. %<+refrep>     \@openrighttrue
  3076. %<+refrep>     \renewcommand\thepage{%
  3077. %<+refrep>       \ifnum \c@chapter = \z@
  3078. %<+refrep>          \arabic{page}
  3079. %<+refrep>       \else
  3080. %<+refrep>          \arabic{chapter} -- \arabic{page}
  3081. %<+refrep>       \fi
  3082. %<+refrep>       }
  3083. %<+refrep>     }
  3084. %    \end{macrocode}
  3085. %   \end{macro}
  3086. %   \begin{macro}{\leftmarginfraction}
  3087. %   This provides an interface to change the horizontal layout.
  3088. %   In this version the margin is set to 0.3 |fullwidth|, this
  3089. %   may change in future versions.
  3090. %   \end{macro}
  3091. % \section{Initialization}
  3092. % \subsection{Words}
  3093. % \begin{macro}{\contentsname}
  3094. % \begin{macro}{\listfigurename}
  3095. % \begin{macro}{\listtablename}
  3096. % \begin{macro}{\refname}
  3097. % \begin{macro}{\bibname}
  3098. % \begin{macro}{\indexname}
  3099. % \begin{macro}{\figurename}
  3100. % \begin{macro}{\tablename}
  3101. % \begin{macro}{\partname}
  3102. % \begin{macro}{\chaptername}
  3103. % \begin{macro}{\appendixname}
  3104. % \begin{macro}{\abstractname}
  3105. % This document class is for documents prepared in the English language.
  3106. % To prepare a version for another language, various English words must
  3107. % be replaced.  All the English words that require replacement are
  3108. % defined below in command names.
  3109. %    \begin{macrocode}
  3110. \newcommand\contentsname{Contents}
  3111. \newcommand\listfigurename{List of Figures}
  3112. \newcommand\listtablename{List of Tables}
  3113. %<+refart>\newcommand\refname{References}
  3114. %<+refrep>\newcommand\bibname{Bibliography}
  3115. \newcommand\indexname{Index}
  3116. \newcommand\figurename{Figure}
  3117. \newcommand\tablename{Table}
  3118. \newcommand\partname{Part}
  3119. %<+refrep>\newcommand\chaptername{Chapter}
  3120. \newcommand\appendixname{Appendix}
  3121. \newcommand\abstractname{Abstract}
  3122. %    \end{macrocode}
  3123. % \end{macro}
  3124. % \end{macro}
  3125. % \end{macro}
  3126. % \end{macro}
  3127. % \end{macro}
  3128. % \end{macro}
  3129. % \end{macro}
  3130. % \end{macro}
  3131. % \end{macro}
  3132. % \end{macro}
  3133. % \end{macro}
  3134. % \end{macro}
  3135. % \subsection{Date}
  3136. % \begin{macro}{\today}
  3137. %    This macro uses the \TeX\ primitives |\month|, |\day| and |\year|
  3138. %    to provide the date of the \LaTeX-run.
  3139. %    \begin{macrocode}
  3140. \newcommand\today{\ifcase\month\or
  3141.   January\or February\or March\or April\or May\or June\or
  3142.   July\or August\or September\or October\or November\or December\fi
  3143.   \space\number\day, \number\year}
  3144. %    \end{macrocode}
  3145. % \end{macro}
  3146. % \subsection{Two column mode}
  3147. % \begin{macro}{\columnsep}
  3148. %    This gives the distance between two columns in two column mode.
  3149. %    \begin{macrocode}
  3150. \setlength\columnsep{10\p@}
  3151. %    \end{macrocode}
  3152. % \end{macro}
  3153. % \begin{macro}{\columnseprule}
  3154. %    This gives the width of the rule between two columns in two
  3155. %    column mode. We have no visible rule.
  3156. %    \begin{macrocode}
  3157. \setlength\columnseprule{0\p@}
  3158. %    \end{macrocode}
  3159. % \end{macro}
  3160. % \subsection{The page style}
  3161. %    We have \pstyle{plain} pages in the document classes refart
  3162. %    and refrep unless the user specified otherwise.
  3163. %    We use arabic pagenumbers.
  3164. %    \begin{macrocode}
  3165. \pagestyle{plain}
  3166. \pagenumbering{arabic}      % Arabic page numbers
  3167. %    \end{macrocode}
  3168. % \subsection{Single or double sided printing}
  3169. %    When the \Lopt{twoside} option was specified, we don't try to
  3170. %    make each page as long as all the others.
  3171. %    \begin{macrocode}
  3172. \if@twoside
  3173. \else
  3174.   \raggedbottom
  3175. %    \end{macrocode}
  3176. %    When the \Lopt{twocolumn} option was specified we call
  3177. %    |\twocolumn| to activate this mode. We try to make each column as
  3178. %    long as the others, but call |sloppy| to make our life easier.
  3179. %    \begin{macrocode}
  3180. \if@twocolumn
  3181.   \twocolumn
  3182.   \sloppy
  3183.   \flushbottom
  3184. %    \end{macrocode}
  3185. %    Normally we call |\onecolumn| to initiate typesetting in one
  3186. %    column.
  3187. %    \begin{macrocode}
  3188. \else
  3189.   \onecolumn
  3190. %</refart|refrep>
  3191. %    \end{macrocode}
  3192. % \Finale
  3193. \endinput
  3194.